[FFmpeg-devel] [PATCH 1/2] doc/examples/decode_audio: print message about how to play the output file
Limin Wang
lance.lmwang at gmail.com
Fri Aug 23 15:29:42 EEST 2019
On Wed, Aug 21, 2019 at 07:34:28PM +0800, Steven Liu wrote:
> Signed-off-by: Steven Liu <lq at chinaffmpeg.org>
> ---
> doc/examples/decode_audio.c | 51 +++++++++++++++++++++++++++++++++++++
> 1 file changed, 51 insertions(+)
>
> diff --git a/doc/examples/decode_audio.c b/doc/examples/decode_audio.c
> index 19dcafd2c8..23d0c9bf50 100644
> --- a/doc/examples/decode_audio.c
> +++ b/doc/examples/decode_audio.c
> @@ -39,6 +39,35 @@
> #define AUDIO_INBUF_SIZE 20480
> #define AUDIO_REFILL_THRESH 4096
>
> +static int get_format_from_sample_fmt(const char **fmt,
> + enum AVSampleFormat sample_fmt)
> +{
> + int i;
> + struct sample_fmt_entry {
> + enum AVSampleFormat sample_fmt; const char *fmt_be, *fmt_le;
> + } sample_fmt_entries[] = {
> + { AV_SAMPLE_FMT_U8, "u8", "u8" },
> + { AV_SAMPLE_FMT_S16, "s16be", "s16le" },
> + { AV_SAMPLE_FMT_S32, "s32be", "s32le" },
> + { AV_SAMPLE_FMT_FLT, "f32be", "f32le" },
> + { AV_SAMPLE_FMT_DBL, "f64be", "f64le" },
> + };
> + *fmt = NULL;
> +
> + for (i = 0; i < FF_ARRAY_ELEMS(sample_fmt_entries); i++) {
> + struct sample_fmt_entry *entry = &sample_fmt_entries[i];
> + if (sample_fmt == entry->sample_fmt) {
> + *fmt = AV_NE(entry->fmt_be, entry->fmt_le);
> + return 0;
> + }
> + }
> +
> + fprintf(stderr,
> + "sample format %s is not supported as output format\n",
> + av_get_sample_fmt_name(sample_fmt));
> + return -1;
> +}
> +
> static void decode(AVCodecContext *dec_ctx, AVPacket *pkt, AVFrame *frame,
> FILE *outfile)
> {
> @@ -172,6 +201,28 @@ int main(int argc, char **argv)
> pkt->size = 0;
> decode(c, pkt, decoded_frame, outfile);
>
> + /* print output pcm infomations, because there have no metadata of pcm */
> + enum AVSampleFormat sfmt = c->sample_fmt;
> + int n_channels = c->channels;
> + const char *fmt;
> +
> + if (av_sample_fmt_is_planar(sfmt)) {
> + const char *packed = av_get_sample_fmt_name(sfmt);
> + printf("Warning: the sample format the decoder produced is planar "
> + "(%s). This example will output the first channel only.\n",
> + packed ? packed : "?");
> + sfmt = av_get_packed_sample_fmt(sfmt);
> + }
> +
> + n_channels = c->channels;
duplicate code with line#53?
> + if ((ret = get_format_from_sample_fmt(&fmt, sfmt)) < 0)
> + goto end;
> +
> + printf("Play the output audio file with the command:\n"
> + "ffplay -f %s -ac %d -ar %d %s\n",
> + fmt, n_channels, c->sample_rate,
> + outfilename);
> +end:
> fclose(outfile);
> fclose(f);
>
> --
> 2.17.2 (Apple Git-113)
>
>
>
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
More information about the ffmpeg-devel
mailing list