Browse Source

lavc/h264_parser: export field order in more cases

tags/n3.2
Rodger Combs 9 years ago
parent
commit
f271a9bd99
No known key found for this signature in database GPG Key ID: E3E54DCDCD3CB843
1 changed files with 15 additions and 1 deletions
  1. +15
    -1
      libavcodec/h264_parser.c

+ 15
- 1
libavcodec/h264_parser.c View File

@@ -61,6 +61,7 @@ typedef struct H264ParseContext {
int parse_history_count;
int parse_last_mb;
int64_t reference_dts;
int last_frame_num, last_picture_structure;
} H264ParseContext;


@@ -528,7 +529,19 @@ static inline int parse_nal_units(AVCodecParserContext *s,
s->picture_structure = AV_PICTURE_STRUCTURE_TOP_FIELD;
else
s->picture_structure = AV_PICTURE_STRUCTURE_BOTTOM_FIELD;
s->field_order = AV_FIELD_UNKNOWN;
if (p->poc.frame_num == p->last_frame_num &&
p->last_picture_structure != AV_PICTURE_STRUCTURE_UNKNOWN &&
p->last_picture_structure != AV_PICTURE_STRUCTURE_FRAME &&
p->last_picture_structure != s->picture_structure) {
if (p->last_picture_structure == AV_PICTURE_STRUCTURE_TOP_FIELD)
s->field_order = AV_FIELD_TT;
else
s->field_order = AV_FIELD_BB;
} else {
s->field_order = AV_FIELD_UNKNOWN;
}
p->last_picture_structure = s->picture_structure;
p->last_frame_num = p->poc.frame_num;
}

av_freep(&nal.rbsp_buffer);
@@ -677,6 +690,7 @@ static av_cold int init(AVCodecParserContext *s)
H264ParseContext *p = s->priv_data;

p->reference_dts = AV_NOPTS_VALUE;
p->last_frame_num = INT_MAX;
ff_h264dsp_init(&p->h264dsp, 8, 1);
return 0;
}


Loading…
Cancel
Save