[FFmpeg-devel] [PATCH] ffprobe: print stream channel_layout when available

Paul B Mahol onemda at gmail.com
Wed Oct 2 11:29:23 CEST 2013


On 10/1/13, Stefano Sabatini <stefasab at gmail.com> wrote:
> Fix trac ticket #3006.
> ---
>  doc/ffprobe.xsd                | 1 +
>  ffprobe.c                      | 9 +++++++++
>  tests/ref/fate/ffprobe_compact | 2 +-
>  tests/ref/fate/ffprobe_csv     | 2 +-
>  tests/ref/fate/ffprobe_default | 1 +
>  tests/ref/fate/ffprobe_flat    | 1 +
>  tests/ref/fate/ffprobe_ini     | 1 +
>  7 files changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/doc/ffprobe.xsd b/doc/ffprobe.xsd
> index dae2b3f..6a48ff4 100644
> --- a/doc/ffprobe.xsd
> +++ b/doc/ffprobe.xsd
> @@ -138,6 +138,7 @@
>        <xsd:attribute name="sample_fmt"       type="xsd:string"/>
>        <xsd:attribute name="sample_rate"      type="xsd:int"/>
>        <xsd:attribute name="channels"         type="xsd:int"/>
> +      <xsd:attribute name="channel_layout"   type="xsd:string"/>
>        <xsd:attribute name="bits_per_sample"  type="xsd:int"/>
>
>        <xsd:attribute name="id"               type="xsd:string"/>
> diff --git a/ffprobe.c b/ffprobe.c
> index 8b1a584..b7f287c 100644
> --- a/ffprobe.c
> +++ b/ffprobe.c
> @@ -1823,6 +1823,15 @@ static void show_stream(WriterContext *w,
> AVFormatContext *fmt_ctx, int stream_i
>              else   print_str_opt("sample_fmt", "unknown");
>              print_val("sample_rate",     dec_ctx->sample_rate,
> unit_hertz_str);
>              print_int("channels",        dec_ctx->channels);
> +
> +            if (dec_ctx->channel_layout) {
> +                av_bprint_clear(&pbuf);
> +                av_bprint_channel_layout(&pbuf, dec_ctx->channels,
> dec_ctx->channel_layout);
> +                print_str    ("channel_layout", pbuf.str);
> +            } else {
> +                print_str_opt("channel_layout", "unknown");
> +            }
> +
>              print_int("bits_per_sample",
> av_get_bits_per_sample(dec_ctx->codec_id));
>              break;
>
> diff --git a/tests/ref/fate/ffprobe_compact
> b/tests/ref/fate/ffprobe_compact
> index 249df57..eb82edb 100644
> --- a/tests/ref/fate/ffprobe_compact
> +++ b/tests/ref/fate/ffprobe_compact
> @@ -26,7 +26,7 @@
> packet|codec_type=video|stream_index=1|pts=6144|pts_time=0.120000|dts=6144|dts_t
> frame|media_type=video|key_frame=1|pkt_pts=6144|pkt_pts_time=0.120000|pkt_dts=6144|pkt_dts_time=0.120000|pkt_duration=2048|pkt_duration_time=0.040000|pkt_pos=794307|pkt_size=N/A|width=320|height=240|pix_fmt=rgb24|sample_aspect_ratio=1:1|pict_type=I|coded_picture_number=0|display_picture_number=0|interlaced_frame=0|top_field_first=0|repeat_pict=0
> packet|codec_type=video|stream_index=2|pts=6144|pts_time=0.120000|dts=6144|dts_time=0.120000|duration=2048|duration_time=0.040000|convergence_duration=N/A|convergence_duration_time=N/A|size=30000|pos=1024731|flags=K
> frame|media_type=video|key_frame=1|pkt_pts=6144|pkt_pts_time=0.120000|pkt_dts=6144|pkt_dts_time=0.120000|pkt_duration=2048|pkt_duration_time=0.040000|pkt_pos=1024731|pkt_size=N/A|width=100|height=100|pix_fmt=rgb24|sample_aspect_ratio=1:1|pict_type=I|coded_picture_number=0|display_picture_number=0|interlaced_frame=0|top_field_first=0|repeat_pict=0
> -stream|index=0|codec_name=pcm_s16le|profile=unknown|codec_type=audio|codec_time_base=1/44100|codec_tag_string=PSD[16]|codec_tag=0x10445350|sample_fmt=s16|sample_rate=44100|channels=1|bits_per_sample=16|id=N/A|r_frame_rate=0/0|avg_frame_rate=0/0|time_base=1/44100|start_pts=0|start_time=0.000000|duration_ts=N/A|duration=N/A|bit_rate=705600|nb_frames=N/A|nb_read_frames=6|nb_read_packets=6|disposition:default=0|disposition:dub=0|disposition:original=0|disposition:comment=0|disposition:lyrics=0|disposition:karaoke=0|disposition:forced=0|disposition:hearing_impaired=0|disposition:visual_impaired=0|disposition:clean_effects=0|disposition:attached_pic=0|tag:E=mc^2
> +stream|index=0|codec_name=pcm_s16le|profile=unknown|codec_type=audio|codec_time_base=1/44100|codec_tag_string=PSD[16]|codec_tag=0x10445350|sample_fmt=s16|sample_rate=44100|channels=1|channel_layout=unknown|bits_per_sample=16|id=N/A|r_frame_rate=0/0|avg_frame_rate=0/0|time_base=1/44100|start_pts=0|start_time=0.000000|duration_ts=N/A|duration=N/A|bit_rate=705600|nb_frames=N/A|nb_read_frames=6|nb_read_packets=6|disposition:default=0|disposition:dub=0|disposition:original=0|disposition:comment=0|disposition:lyrics=0|disposition:karaoke=0|disposition:forced=0|disposition:hearing_impaired=0|disposition:visual_impaired=0|disposition:clean_effects=0|disposition:attached_pic=0|tag:E=mc^2
> stream|index=1|codec_name=rawvideo|profile=unknown|codec_type=video|codec_time_base=1/51200|codec_tag_string=RGB[24]|codec_tag=0x18424752|width=320|height=240|has_b_frames=0|sample_aspect_ratio=1:1|display_aspect_ratio=4:3|pix_fmt=rgb24|level=-99|timecode=N/A|id=N/A|r_frame_rate=25/1|avg_frame_rate=25/1|time_base=1/51200|start_pts=0|start_time=0.000000|duration_ts=N/A|duration=N/A|bit_rate=N/A|nb_frames=N/A|nb_read_frames=4|nb_read_packets=4|disposition:default=0|disposition:dub=0|disposition:original=0|disposition:comment=0|disposition:lyrics=0|disposition:karaoke=0|disposition:forced=0|disposition:hearing_impaired=0|disposition:visual_impaired=0|disposition:clean_effects=0|disposition:attached_pic=0|tag:title=foobar|tag:duration_ts=field-and-tags-conflict-attempt
> stream|index=2|codec_name=rawvideo|profile=unknown|codec_type=video|codec_time_base=1/51200|codec_tag_string=RGB[24]|codec_tag=0x18424752|width=100|height=100|has_b_frames=0|sample_aspect_ratio=1:1|display_aspect_ratio=1:1|pix_fmt=rgb24|level=-99|timecode=N/A|id=N/A|r_frame_rate=25/1|avg_frame_rate=25/1|time_base=1/51200|start_pts=0|start_time=0.000000|duration_ts=N/A|duration=N/A|bit_rate=N/A|nb_frames=N/A|nb_read_frames=4|nb_read_packets=4|disposition:default=0|disposition:dub=0|disposition:original=0|disposition:comment=0|disposition:lyrics=0|disposition:karaoke=0|disposition:forced=0|disposition:hearing_impaired=0|disposition:visual_impaired=0|disposition:clean_effects=0|disposition:attached_pic=0
> format|filename=tests/data/ffprobe-test.nut|nb_streams=3|nb_programs=0|format_name=nut|start_time=0.000000|duration=0.120000|size=1054812|bit_rate=70320800|probe_score=100|tag:title=ffprobe
> test file|tag:comment='A comment with CSV, XML & JSON special chars': <tag
> value="x">|tag:comment2=I cH- Uenic,o/dEUR
> diff --git a/tests/ref/fate/ffprobe_csv b/tests/ref/fate/ffprobe_csv
> index 4d950c3..10d1bf1 100644
> --- a/tests/ref/fate/ffprobe_csv
> +++ b/tests/ref/fate/ffprobe_csv
> @@ -26,7 +26,7 @@
> packet,video,1,6144,0.120000,6144,0.120000,2048,0.040000,N/A,N/A,230400,794307,K
> frame,video,1,6144,0.120000,6144,0.120000,2048,0.040000,794307,N/A,320,240,rgb24,1:1,I,0,0,0,0,0
> packet,video,2,6144,0.120000,6144,0.120000,2048,0.040000,N/A,N/A,30000,1024731,K
> frame,video,1,6144,0.120000,6144,0.120000,2048,0.040000,1024731,N/A,100,100,rgb24,1:1,I,0,0,0,0,0
> -stream,0,pcm_s16le,unknown,audio,1/44100,PSD[16],0x10445350,s16,44100,1,16,N/A,0/0,0/0,1/44100,0,0.000000,N/A,N/A,705600,N/A,6,6,0,0,0,0,0,0,0,0,0,0,0,mc^2
> +stream,0,pcm_s16le,unknown,audio,1/44100,PSD[16],0x10445350,s16,44100,1,unknown,16,N/A,0/0,0/0,1/44100,0,0.000000,N/A,N/A,705600,N/A,6,6,0,0,0,0,0,0,0,0,0,0,0,mc^2
> stream,1,rawvideo,unknown,video,1/51200,RGB[24],0x18424752,320,240,0,1:1,4:3,rgb24,-99,N/A,N/A,25/1,25/1,1/51200,0,0.000000,N/A,N/A,N/A,N/A,4,4,0,0,0,0,0,0,0,0,0,0,0,foobar,field-and-tags-conflict-attempt
> stream,2,rawvideo,unknown,video,1/51200,RGB[24],0x18424752,100,100,0,1:1,1:1,rgb24,-99,N/A,N/A,25/1,25/1,1/51200,0,0.000000,N/A,N/A,N/A,N/A,4,4,0,0,0,0,0,0,0,0,0,0,0
> format,tests/data/ffprobe-test.nut,3,0,nut,0.000000,0.120000,1054812,70320800,100,ffprobe
> test file,"'A comment with CSV, XML & JSON special chars': <tag
> value=""x"">",I cH- Uenic,o/dEUR
> diff --git a/tests/ref/fate/ffprobe_default
> b/tests/ref/fate/ffprobe_default
> index 690a419..c6d9b28 100644
> --- a/tests/ref/fate/ffprobe_default
> +++ b/tests/ref/fate/ffprobe_default
> @@ -491,6 +491,7 @@ codec_tag=0x10445350
>  sample_fmt=s16
>  sample_rate=44100
>  channels=1
> +channel_layout=unknown
>  bits_per_sample=16
>  id=N/A
>  r_frame_rate=0/0
> diff --git a/tests/ref/fate/ffprobe_flat b/tests/ref/fate/ffprobe_flat
> index e54510f..ae280b7 100644
> --- a/tests/ref/fate/ffprobe_flat
> +++ b/tests/ref/fate/ffprobe_flat
> @@ -434,6 +434,7 @@ streams.stream.0.codec_tag="0x10445350"
>  streams.stream.0.sample_fmt="s16"
>  streams.stream.0.sample_rate="44100"
>  streams.stream.0.channels=1
> +streams.stream.0.channel_layout="unknown"
>  streams.stream.0.bits_per_sample=16
>  streams.stream.0.id="N/A"
>  streams.stream.0.r_frame_rate="0/0"
> diff --git a/tests/ref/fate/ffprobe_ini b/tests/ref/fate/ffprobe_ini
> index 8f4de86..c47a0c4 100644
> --- a/tests/ref/fate/ffprobe_ini
> +++ b/tests/ref/fate/ffprobe_ini
> @@ -493,6 +493,7 @@ codec_tag=0x10445350
>  sample_fmt=s16
>  sample_rate=44100
>  channels=1
> +channel_layout=unknown
>  bits_per_sample=16
>  id=N/A
>  r_frame_rate=0/0

Thing is this only prints 'unknown' for channel layout.


More information about the ffmpeg-devel mailing list