mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-26 19:01:44 +02:00
h264: Fix ticket #3147 H264 - Wrong field order
Default field order to top field first when interlaced frame is detected and pic_struct_present_flag is not set. Since bottom field first comes from the old NTSC standard and is not used with HD anymore I think it´s straight forward to favor the majority. Signed-off-by: Thomas Mundt <loudmax@yahoo.de> Reviewed-by: Kieran Kunhya <kierank@obe.tv> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
b8b8e82ea1
commit
2b6567722a
@ -803,7 +803,7 @@ static void decode_postinit(H264Context *h, int setup_finished)
|
||||
/* Derive top_field_first from field pocs. */
|
||||
cur->f->top_field_first = cur->field_poc[0] < cur->field_poc[1];
|
||||
} else {
|
||||
if (cur->f->interlaced_frame || h->sps.pic_struct_present_flag) {
|
||||
if (h->sps.pic_struct_present_flag) {
|
||||
/* Use picture timing SEI information. Even if it is a
|
||||
* information of a past frame, better than nothing. */
|
||||
if (h->sei_pic_struct == SEI_PIC_STRUCT_TOP_BOTTOM ||
|
||||
@ -811,6 +811,10 @@ static void decode_postinit(H264Context *h, int setup_finished)
|
||||
cur->f->top_field_first = 1;
|
||||
else
|
||||
cur->f->top_field_first = 0;
|
||||
} else if (cur->f->interlaced_frame) {
|
||||
/* Default to top field first when pic_struct_present_flag
|
||||
* is not set but interlaced frame detected */
|
||||
cur->f->top_field_first = 1;
|
||||
} else {
|
||||
/* Most likely progressive */
|
||||
cur->f->top_field_first = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user