[FFmpeg-devel] [FFmpeg-cvslog] avformat/mxfdec: fix error check in macro
James Almer
jamrial at gmail.com
Sat Dec 22 18:02:17 EET 2018
On 12/22/2018 12:50 PM, Michael Niedermayer wrote:
> On Sat, Dec 15, 2018 at 10:18:18AM +0100, Hendrik Leppkes wrote:
>> On Sat, Dec 15, 2018 at 9:50 AM Paul B Mahol <onemda at gmail.com> wrote:
>>>
>>> On 12/15/18, James Almer <jamrial at gmail.com> wrote:
>>>>> ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com
>>>>> <http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog>> | Thu Dec 13 23:51:02
>>>>> 2018 +0100| [e5a0013c4a6248fe7e2a651db1fda6b9bb2cd743] | committer: Paul B
>>>>> Mahol
>>>>>
>>>>> avformat/mxfdec: fix error check in macro
>>>>>
>>>>> Fixes #6750.
>>>>>
>>>>>> /http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e5a0013c4a6248fe7e2a651db1fda6b9bb2cd743
>>>>> /---
>>>>>
>>>>> libavformat/mxfdec.c | 2 +-
>>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
>>>>> index 887645d28b..f5e3a736e5 100644
>>>>> --- a/libavformat/mxfdec.c
>>>>> +++ b/libavformat/mxfdec.c
>>>>> @@ -2590,7 +2590,7 @@ static int64_t mxf_timestamp_to_int64(uint64_t
>>>>> timestamp)
>>>>>
>>>>> #define SET_TS_METADATA(pb, name, var, str) do { \
>>>>> var = avio_rb64(pb); \
>>>>> - if ((ret = avpriv_dict_set_timestamp(&s->metadata, name,
>>>>> mxf_timestamp_to_int64(var)) < 0)) \
>>>>> + if ((ret = avpriv_dict_set_timestamp(&s->metadata, name,
>>>>> mxf_timestamp_to_int64(var))) < 0) \
>>>>> return ret; \
>>>>> } while (0)
>>>>
>>>> This broke several mxf tests.
>>>>
>>>> copy-trac4914
>>>> lavf-mxf
>>>> lavf-mxf_d10
>>>> lavf-mxf_dv25
>>>> lavf-mxf_dvcpro50
>>>> lavf-mxf_opatom
>>>> lavf-mxf_opatom_audio
>>>
>>> Can not reproduce. Is this MSVS only thing?
>>
>> Its not MSVS, but apparently Windows. I wonder if either gmtime_r or
>
> this reproduces on mingw64+wine too btw
>
> @@ -1,49 +1,2 @@
> b37c4d5693cdb5b9ed9b33501ffb682a *tests/data/fate/copy-trac4914.mxf
> 561721 tests/data/fate/copy-trac4914.mxf
> -#tb 0: 1001/30000
> -#media_type 0: video
> -#codec_id 0: rawvideo
> -#dimensions 0: 480x270
> -#sar 0: 1/1
> -#tb 1: 1/48000
> -#media_type 1: audio
> -#codec_id 1: pcm_s16le
> -#sample_rate 1: 48000
> -#channel_layout 1: 3
> -#channel_layout_name 1: stereo
> -0, 0, 0, 1, 259200, 0xf36957da
> -1, 0, 0, 1602, 6408, 0x1dd7b37c
> -0, 1, 1, 1, 259200, 0x29a1f586
> -1, 1602, 1602, 1601, 6404, 0xb6854846
> -1, 3203, 3203, 1602, 6408, 0x4d3ea85e
> -0, 2, 2, 1, 259200, 0x5578d9c3
> -0, 3, 3, 1, 259200, 0x83938b61
> -1, 4805, 4805, 1601, 6404, 0x5eb15a6d
> -1, 6406, 6406, 1602, 6408, 0x059d21a0
> -0, 4, 4, 1, 259200, 0xa6ce7618
> -0, 5, 5, 1, 259200, 0x4892a0f5
> -1, 8008, 8008, 1602, 6408, 0xd8352572
> -0, 6, 6, 1, 259200, 0x921c6051
> -1, 9610, 9610, 1601, 6404, 0xf69be875
> -1, 11211, 11211, 1602, 6408, 0x41e75601
> -0, 7, 7, 1, 259200, 0x618c0026
> -0, 8, 8, 1, 259200, 0xdbc3ca4d
> -1, 12813, 12813, 1601, 6404, 0x75e3196d
> -1, 14414, 14414, 1602, 6408, 0xb46bad29
> -0, 9, 9, 1, 259200, 0xf088c731
> -0, 10, 10, 1, 259200, 0xce77ddee
> -1, 16016, 16016, 1602, 6408, 0x41e6ceac
> -0, 11, 11, 1, 259200, 0x798565eb
> -1, 17618, 17618, 1601, 6404, 0x2258734e
> -1, 19219, 19219, 1602, 6408, 0xc46d9103
> -0, 12, 12, 1, 259200, 0x57185dc8
> -0, 13, 13, 1, 259200, 0x607a9086
> -1, 20821, 20821, 1601, 6404, 0xd7c07892
> -1, 22422, 22422, 1602, 6408, 0x2aaad91d
> -0, 14, 14, 1, 259200, 0x59bd5c34
> -0, 15, 15, 1, 259200, 0xadb1da77
> -1, 24024, 24024, 1602, 6408, 0x69bfb643
> -0, 16, 16, 1, 259200, 0x1f7d7b14
> -1, 25626, 25626, 1601, 6404, 0x0e644904
> -1, 27227, 27227, 1602, 6408, 0x06e92ea2
> -0, 17, 17, 1, 259200, 0xcdd45467
> Test copy-trac4914 failed. Look at tests/data/fate/copy-trac4914.err for details.
As i said gmtime_r() is what's failing, and it's used by both the muxer
and demuxer. Only Cygwin seems to work, probably because it uses its own
C libraries.
If the code can't be simplified to remove the gmtime_r() usage, then
both modules should perhaps just skip writing/reading the modification
date metadata tag. And for that matter, shouldn't such tag be written or
not depending on the bitexact flag?
More information about the ffmpeg-devel
mailing list