| Index: patched-ffmpeg-mt/libavformat/gxf.c
|
| ===================================================================
|
| --- patched-ffmpeg-mt/libavformat/gxf.c (revision 41250)
|
| +++ patched-ffmpeg-mt/libavformat/gxf.c (working copy)
|
| @@ -313,7 +313,7 @@
|
| st = s->streams[idx];
|
| if (!main_timebase.num || !main_timebase.den) {
|
| main_timebase.num = si.frames_per_second.den;
|
| - main_timebase.den = si.frames_per_second.num * si.fields_per_frame;
|
| + main_timebase.den = si.frames_per_second.num * 2;
|
| }
|
| st->start_time = si.first_field;
|
| if (si.first_field != AV_NOPTS_VALUE && si.last_field != AV_NOPTS_VALUE)
|
| @@ -344,15 +344,17 @@
|
| if (!main_timebase.num || !main_timebase.den) {
|
| // this may not always be correct, but simply the best we can get
|
| main_timebase.num = fps.den;
|
| - main_timebase.den = fps.num;
|
| + main_timebase.den = fps.num * 2;
|
| }
|
| } else
|
| av_log(s, AV_LOG_INFO, "UMF packet too short\n");
|
| } else
|
| av_log(s, AV_LOG_INFO, "UMF packet missing\n");
|
| url_fskip(pb, len);
|
| + // set a fallback value, 60000/1001 is specified for audio-only files
|
| + // so use that regardless of why we do not know the video frame rate.
|
| if (!main_timebase.num || !main_timebase.den)
|
| - main_timebase = (AVRational){1, 50}; // set some arbitrary fallback
|
| + main_timebase = (AVRational){1001, 60000};
|
| for (i = 0; i < s->nb_streams; i++) {
|
| AVStream *st = s->streams[i];
|
| av_set_pts_info(st, 32, main_timebase.num, main_timebase.den);
|
|
|