[FFmpeg-devel] [PATCH v3 1/3] tests/fate/flvenc: add hevc in enhanced flv test case

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Thu Jul 20 13:06:32 EEST 2023


Steven Liu:
> Andreas Rheinhardt <andreas.rheinhardt at outlook.com> 于2023年7月20日周四 16:41写道:
>>
>> Steven Liu:
>>> Andreas Rheinhardt <andreas.rheinhardt at outlook.com> 于2023年7月19日周三 18:32写道:
>>>>
>>>> Steven Liu:
>>>>> Signed-off-by: Steven Liu <lq at chinaffmpeg.org>
>>>>> ---
>>>>>  tests/fate/flvenc.mak            | 7 ++++++-
>>>>>  tests/ref/fate/enhanced-flv-hevc | 8 ++++++++
>>>>>  2 files changed, 14 insertions(+), 1 deletion(-)
>>>>>  create mode 100644 tests/ref/fate/enhanced-flv-hevc
>>>>>
>>>>> diff --git a/tests/fate/flvenc.mak b/tests/fate/flvenc.mak
>>>>> index 5032fface3..6b2fbe8c89 100644
>>>>> --- a/tests/fate/flvenc.mak
>>>>> +++ b/tests/fate/flvenc.mak
>>>>> @@ -1,5 +1,10 @@
>>>>>  FATE_FLVENC_FFMPEG_FFPROBE-$(call TRANSCODE, FLV, FLV, RAWVIDEO_DECODER SCALE_FILTER TESTSRC_FILTER LAVFI_INDEV) += fate-flv-add_keyframe_index
>>>>>  fate-flv-add_keyframe_index: CMD = transcode "lavfi -graph testsrc=r=7:n=2:d=20" "foo" flv "-vf scale -c:v flv1 -dct int -g 7 -flvflags add_keyframe_index" "-c copy -t 0.1" "-show_entries format_tags"
>>>>>
>>>>> +FATE_ENHANCED_FLVENC_FFMPEG-$(call REMUX, MOV, FLV_MUXER) += fate-enhanced-flv-hevc
>>>>> +fate-enhanced-flv-hevc: CMD = transcode mov $(TARGET_SAMPLES)/hevc/dv84.mov\
>>>>> +             flv "-vcodec copy -map 0:v -frames 1"
>>>>> +
>>>>>  FATE_FFMPEG_FFPROBE += $(FATE_FLVENC_FFMPEG_FFPROBE-yes)
>>>>> -fate-flvenc: $(FATE_FLVENC_FFMPEG_FFPROBE-yes)
>>>>> +FATE_SAMPLES_FFMPEG += $(FATE_ENHANCED_FLVENC_FFMPEG-yes)
>>>>> +fate-flvenc: $(FATE_FLVENC_FFMPEG_FFPROBE-yes) $(FATE_ENHANCED_FLVENC_FFMPEG-yes)
>>>>> diff --git a/tests/ref/fate/enhanced-flv-hevc b/tests/ref/fate/enhanced-flv-hevc
>>>>> new file mode 100644
>>>>> index 0000000000..41eaefaf6e
>>>>> --- /dev/null
>>>>> +++ b/tests/ref/fate/enhanced-flv-hevc
>>>>> @@ -0,0 +1,8 @@
>>>>> +afed0105d121688bad7dc94218256571 *tests/data/fate/enhanced-flv-hevc.flv
>>>>> +64396 tests/data/fate/enhanced-flv-hevc.flv
>>>>> +#tb 0: 1/30
>>>>> +#media_type 0: video
>>>>> +#codec_id 0: rawvideo
>>>>> +#dimensions 0: 1920x1080
>>>>> +#sar 0: 0/1
>>>>> +0,          0,          0,        1,  6220800, 0x1f259c93
>>>>
>>>> Why are you restricting this to one frame? And why are you not copying
>>>> the audio, too (this would test multiplexing)? After all, FLV supports AAC.
>>>> Furthermore, you are copying the video when creating the intermediate
>>>> FLV file, yet then you are decoding it at the next stage. This decoding
>>>> would necessitate a dependency on the HEVC decoder (and maybe the parser
>>>> as well as the extract_extradata bsf?). Alternatively, one can just use
>>>> codec copy when reading the intermediate file as well (the latter is my
>>>> preferred approach).
>>>> The same remarks also apply to the other patches.
>>> Hi Andreas,
>>>
>>>
>>> What about do it like this:
>>>
>>> FATE_ENHANCED_FLVENC_FFMPEG-$(call TRANSCODE, RAWVIDEO HEVC, FLV MOV,
>>> HEVCPARSE) += fate-enhanced-flv-hevc
>>> fate-enhanced-flv-hevc: CMD = transcode mov $(TARGET_SAMPLES)/hevc/dv84.mov\
>>>         flv "-c copy" "-af aresample"
>>>
>>
>> You would not need to resample when you simply copied the stuff instead
>> of decoding.
> 
> It will get error message if i don't use resample:
> 
> ffmpeg version N-111514-g6efbbe7d25 Copyright (c) 2000-2023 the FFmpeg
> developers
>   built with Apple clang version 14.0.3 (clang-1403.0.22.14.1)
>   configuration: --prefix=/usr/local/ --libdir=/usr/local/lib/
> --cc=clang --enable-htmlpages --enable-libx264 --enable-gpl
> --extra-cflags='-I/usr/local/include/GraphicsMagick/
> -I/usr/local/opt/openssl/include/ -O0 -g3 -fsanitize=address
> -Wno-error -fPIC -I/usr/local/include -fno-omit-frame-pointer'
> --extra-ldflags='-O0 -g3 -fsanitize=address -fno-omit-frame-pointer
> -Wno-error -fPIC -L/usr/local/lib -L/usr/local/opt/openssl/lib -lpng'
> --enable-libfreetype --enable-fontconfig --enable-libspeex
> --enable-libopus --enable-libzmq --enable-libx265 --enable-libass
> --enable-videotoolbox --disable-optimizations --enable-audiotoolbox
> --enable-opengl --disable-stripping --samples=../../fate-suite/
> --enable-encoder=hevc_videotoolbox --enable-hwaccel=hevc_videotoolbox
> --enable-hwaccel=h264_videotoolbox --enable-openssl --enable-nonfree
> --disable-shared --enable-libfdk_aac --enable-libxml2
> --enable-libmp3lame --enable-libaom --enable-lcms2 --enable-libwebp
> --enable-libvpx
>   libavutil      58. 14.100 / 58. 14.100
>   libavcodec     60. 22.100 / 60. 22.100
>   libavformat    60. 10.100 / 60. 10.100
>   libavdevice    60.  2.101 / 60.  2.101
>   libavfilter     9.  8.102 /  9.  8.102
>   libswscale      7.  3.100 /  7.  3.100
>   libswresample   4. 11.100 /  4. 11.100
>   libpostproc    57.  2.100 / 57.  2.100
> Input #0, flv, from
> '/Users/liuqi/multimedia/upstream_ffmpeg/ufbuild/tests/data/fate/enhanced-flv-hevc.flv':
>   Metadata:
>     major_brand     : qt
>     minor_version   : 0
>     compatible_brands: qt
>     com.apple.quicktime.creationdate: 2021-05-29T15:14:19-0400
>     com.apple.quicktime.make: Apple
>     com.apple.quicktime.model: iPhone 12 mini
>     com.apple.quicktime.software: 14.4.1
>   Duration: 00:00:03.40, start: 0.000000, bitrate: 8469 kb/s
>   Stream #0:0: Video: hevc (Main 10), yuv420p10le(tv,
> bt2020nc/bt2020/arib-std-b67), 1920x1080, 8479 kb/s, 30 fps, 29.97
> tbr, 1k tbn
>   Stream #0:1: Audio: aac (LC), 44100 Hz, stereo, fltp, 148 kb/s
> Stream mapping:
>   Stream #0:0 -> #0:0 (hevc (native) -> rawvideo (native))
>   Stream #0:1 -> #0:1 (aac (native) -> pcm_s16le (native))
> The filters 'Parsed_anull_0' and 'format_out_0_1' do not have a common
> format and automatic conversion is disabled.
> [af#0:1 @ 0x61000000b740] Error reinitializing filters!
> Failed to inject frame into filter network: Invalid argument
> Invalid argument
> Conversion failed!
> threads=1
> 
> 

The reason for this is that you do not copy the stuff when demuxing the
intermediate file; instead you decode it.

- Andreas



More information about the ffmpeg-devel mailing list