diff mbox series

[FFmpeg-devel,9/9] avformat/wavdec: Test s337m

Message ID 20200103155636.7476-10-nicolas.gaullier@cji.paris
State New
Headers show
Series avformat: Use s337m subdemux inside wav
Related show

Checks

Context Check Description
andriy/ffmpeg-patchwork pending
andriy/ffmpeg-patchwork success Applied patch
andriy/ffmpeg-patchwork success Configure finished
andriy/ffmpeg-patchwork success Make finished
andriy/ffmpeg-patchwork fail Make fate failed

Commit Message

Nicolas Gaullier Jan. 3, 2020, 3:56 p.m. UTC
Test the new 'dolbyeprobe' AVOption.
Test dolby_e decoding for 24 bits with program config '5.1+2'
---
 tests/Makefile       | 1 +
 tests/fate-run.sh    | 4 ++++
 tests/fate/audio.mak | 5 +++++
 3 files changed, 10 insertions(+)

Comments

Tomas Härdin Jan. 12, 2020, 8:45 p.m. UTC | #1
fre 2020-01-03 klockan 16:56 +0100 skrev Nicolas Gaullier:
> Test the new 'dolbyeprobe' AVOption.
> Test dolby_e decoding for 24 bits with program config '5.1+2'
> ---
>  tests/Makefile       | 1 +
>  tests/fate-run.sh    | 4 ++++
>  tests/fate/audio.mak | 5 +++++
>  3 files changed, 10 insertions(+)
> 
> diff --git a/tests/Makefile b/tests/Makefile
> index e5f41008d4..65cccac312 100644
> --- a/tests/Makefile
> +++ b/tests/Makefile
> @@ -75,6 +75,7 @@ ENCDEC2 = $(call ALLYES, $(firstword $(1))_ENCODER $(lastword $(1))_DECODER  \
>                           $(firstword $(3))_MUXER   $(lastword $(3))_DEMUXER)
>  
>  DEMDEC  = $(call ALLYES, $(1)_DEMUXER $(2:%=%_DECODER))
> +DEMDEMDEC  = $(call ALLYES, $(1)_DEMUXER $(2)_DEMUXER $(3:%=%_DECODER))
>  ENCMUX  = $(call ALLYES, $(1:%=%_ENCODER) $(2)_MUXER)
>  
>  DEMMUX  = $(call ALLYES, $(1)_DEMUXER $(2)_MUXER)
> diff --git a/tests/fate-run.sh b/tests/fate-run.sh
> index 83cad8cabe..f06b2fd029 100755
> --- a/tests/fate-run.sh
> +++ b/tests/fate-run.sh
> @@ -162,6 +162,10 @@ pcm(){
>      ffmpeg "$@" -vn -f s16le -
>  }
>  
> +dolbye2pcm16(){
> +    ffmpeg -dolbyeprobe 1 "$@" -vn -f s16le -
> +}
> +
>  fmtstdout(){
>      fmt=$1
>      shift 1
> diff --git a/tests/fate/audio.mak b/tests/fate/audio.mak
> index c41958ea2d..0e56d401ea 100644
> --- a/tests/fate/audio.mak
> +++ b/tests/fate/audio.mak
> @@ -24,6 +24,11 @@ fate-dolby-e: CMD = pcm -i $(TARGET_SAMPLES)/dolby_e/16-11
>  fate-dolby-e: CMP = oneoff
>  fate-dolby-e: REF = $(SAMPLES)/dolby_e/16-11.pcm
>  
> +FATE_SAMPLES_AUDIO-$(call DEMDEMDEC, WAV, S337M, DOLBY_E) += fate-dolby-e-wav
> +fate-dolby-e-wav: CMD = dolbye2pcm16 -i $(TARGET_SAMPLES)/dolby_e/512.wav
> +fate-dolby-e-wav: CMP = oneoff
> +fate-dolby-e-wav: REF = $(SAMPLES)/dolby_e/512.wav.pcm
> +
>  FATE_SAMPLES_AUDIO-$(call DEMDEC, DSS, DSS_SP) += fate-dss-lp fate-dss-sp
>  fate-dss-lp: CMD = framecrc -i $(TARGET_SAMPLES)/dss/lp.dss -frames 30
>  fate-dss-sp: CMD = framecrc -i $(TARGET_SAMPLES)/dss/sp.dss -frames 30

This is missing some kind of hash check on the demuxed data

/Tomas
Nicolas Gaullier Jan. 13, 2020, 4:10 p.m. UTC | #2
>> Test the new 'dolbyeprobe' AVOption.
>> Test dolby_e decoding for 24 bits with program config '5.1+2'
>> ---
>>  tests/Makefile       | 1 +
>>  tests/fate-run.sh    | 4 ++++
>>  tests/fate/audio.mak | 5 +++++
>>  3 files changed, 10 insertions(+)
>> 
>> diff --git a/tests/Makefile b/tests/Makefile index 
>> e5f41008d4..65cccac312 100644
>> --- a/tests/Makefile
>> +++ b/tests/Makefile
>> @@ -75,6 +75,7 @@ ENCDEC2 = $(call ALLYES, $(firstword $(1))_ENCODER $(lastword $(1))_DECODER  \
>>                           $(firstword $(3))_MUXER   $(lastword $(3))_DEMUXER)
>>  
>>  DEMDEC  = $(call ALLYES, $(1)_DEMUXER $(2:%=%_DECODER))
>> +DEMDEMDEC  = $(call ALLYES, $(1)_DEMUXER $(2)_DEMUXER 
>> +$(3:%=%_DECODER))
>>  ENCMUX  = $(call ALLYES, $(1:%=%_ENCODER) $(2)_MUXER)
>>  
>>  DEMMUX  = $(call ALLYES, $(1)_DEMUXER $(2)_MUXER) diff --git 
>> a/tests/fate-run.sh b/tests/fate-run.sh index 83cad8cabe..f06b2fd029 
>> 100755
>> --- a/tests/fate-run.sh
>> +++ b/tests/fate-run.sh
>> @@ -162,6 +162,10 @@ pcm(){
>>      ffmpeg "$@" -vn -f s16le -
>>  }
>>  
>> +dolbye2pcm16(){
>> +    ffmpeg -dolbyeprobe 1 "$@" -vn -f s16le - }
>> +
>>  fmtstdout(){
>>      fmt=$1
>>      shift 1
>> diff --git a/tests/fate/audio.mak b/tests/fate/audio.mak index 
>> c41958ea2d..0e56d401ea 100644
>> --- a/tests/fate/audio.mak
>> +++ b/tests/fate/audio.mak
>> @@ -24,6 +24,11 @@ fate-dolby-e: CMD = pcm -i 
>> $(TARGET_SAMPLES)/dolby_e/16-11
>>  fate-dolby-e: CMP = oneoff
>>  fate-dolby-e: REF = $(SAMPLES)/dolby_e/16-11.pcm
>>  
>> +FATE_SAMPLES_AUDIO-$(call DEMDEMDEC, WAV, S337M, DOLBY_E) += 
>> +fate-dolby-e-wav
>> +fate-dolby-e-wav: CMD = dolbye2pcm16 -i 
>> +$(TARGET_SAMPLES)/dolby_e/512.wav
>> +fate-dolby-e-wav: CMP = oneoff
>> +fate-dolby-e-wav: REF = $(SAMPLES)/dolby_e/512.wav.pcm
>> +
>>  FATE_SAMPLES_AUDIO-$(call DEMDEC, DSS, DSS_SP) += fate-dss-lp 
>> fate-dss-sp
>>  fate-dss-lp: CMD = framecrc -i $(TARGET_SAMPLES)/dss/lp.dss -frames 
>> 30
>>  fate-dss-sp: CMD = framecrc -i $(TARGET_SAMPLES)/dss/sp.dss -frames 
>> 30
>>
>This is missing some kind of hash check on the demuxed data

The "oneoff" tests consists in checking the maximum difference between the raw pcm output samples, it must be 0 or 1 max. This test is done in 16-bit truncated output of the decoded stream.
It raises an error too if the duration does not strictly match. I found it appropriate (a strict hash on decoded samples may also break with the many floats of the DolbyE decoder).
My idea was to keep a single test for both "wav demux" and "5.1+2" decode.
Do you think there should be an additional test focused on demuxed data ?
Nicolas
Tomas Härdin Jan. 13, 2020, 9:02 p.m. UTC | #3
mån 2020-01-13 klockan 16:10 +0000 skrev Gaullier Nicolas:
> > > 
> > > +FATE_SAMPLES_AUDIO-$(call DEMDEMDEC, WAV, S337M, DOLBY_E) += 
> > > +fate-dolby-e-wav
> > > +fate-dolby-e-wav: CMD = dolbye2pcm16 -i 
> > > +$(TARGET_SAMPLES)/dolby_e/512.wav
> > > +fate-dolby-e-wav: CMP = oneoff
> > > +fate-dolby-e-wav: REF = $(SAMPLES)/dolby_e/512.wav.pcm
> > > +
> > >  FATE_SAMPLES_AUDIO-$(call DEMDEC, DSS, DSS_SP) += fate-dss-lp 
> > > fate-dss-sp
> > >  fate-dss-lp: CMD = framecrc -i $(TARGET_SAMPLES)/dss/lp.dss -frames 
> > > 30
> > >  fate-dss-sp: CMD = framecrc -i $(TARGET_SAMPLES)/dss/sp.dss -frames 
> > > 30
> > > 
> > This is missing some kind of hash check on the demuxed data
> 
> The "oneoff" tests consists in checking the maximum difference between the raw pcm output samples, it must be 0 or 1 max. This test is done in 16-bit truncated output of the decoded stream.
> It raises an error too if the duration does not strictly match. I found it appropriate (a strict hash on decoded samples may also break with the many floats of the DolbyE decoder).
> My idea was to keep a single test for both "wav demux" and "5.1+2" decode.
> Do you think there should be an additional test focused on demuxed data ?

I don't mean has the decoded data, but rather hash the demuxed packets
before they're decoded.

/Tomas
diff mbox series

Patch

diff --git a/tests/Makefile b/tests/Makefile
index e5f41008d4..65cccac312 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -75,6 +75,7 @@  ENCDEC2 = $(call ALLYES, $(firstword $(1))_ENCODER $(lastword $(1))_DECODER  \
                          $(firstword $(3))_MUXER   $(lastword $(3))_DEMUXER)
 
 DEMDEC  = $(call ALLYES, $(1)_DEMUXER $(2:%=%_DECODER))
+DEMDEMDEC  = $(call ALLYES, $(1)_DEMUXER $(2)_DEMUXER $(3:%=%_DECODER))
 ENCMUX  = $(call ALLYES, $(1:%=%_ENCODER) $(2)_MUXER)
 
 DEMMUX  = $(call ALLYES, $(1)_DEMUXER $(2)_MUXER)
diff --git a/tests/fate-run.sh b/tests/fate-run.sh
index 83cad8cabe..f06b2fd029 100755
--- a/tests/fate-run.sh
+++ b/tests/fate-run.sh
@@ -162,6 +162,10 @@  pcm(){
     ffmpeg "$@" -vn -f s16le -
 }
 
+dolbye2pcm16(){
+    ffmpeg -dolbyeprobe 1 "$@" -vn -f s16le -
+}
+
 fmtstdout(){
     fmt=$1
     shift 1
diff --git a/tests/fate/audio.mak b/tests/fate/audio.mak
index c41958ea2d..0e56d401ea 100644
--- a/tests/fate/audio.mak
+++ b/tests/fate/audio.mak
@@ -24,6 +24,11 @@  fate-dolby-e: CMD = pcm -i $(TARGET_SAMPLES)/dolby_e/16-11
 fate-dolby-e: CMP = oneoff
 fate-dolby-e: REF = $(SAMPLES)/dolby_e/16-11.pcm
 
+FATE_SAMPLES_AUDIO-$(call DEMDEMDEC, WAV, S337M, DOLBY_E) += fate-dolby-e-wav
+fate-dolby-e-wav: CMD = dolbye2pcm16 -i $(TARGET_SAMPLES)/dolby_e/512.wav
+fate-dolby-e-wav: CMP = oneoff
+fate-dolby-e-wav: REF = $(SAMPLES)/dolby_e/512.wav.pcm
+
 FATE_SAMPLES_AUDIO-$(call DEMDEC, DSS, DSS_SP) += fate-dss-lp fate-dss-sp
 fate-dss-lp: CMD = framecrc -i $(TARGET_SAMPLES)/dss/lp.dss -frames 30
 fate-dss-sp: CMD = framecrc -i $(TARGET_SAMPLES)/dss/sp.dss -frames 30