X-Git-Url: https://git.ao2.it/libam7xxx.git/blobdiff_plain/f02525e0c94885e18a7cff407d87184db6b9c0ff..2208b544c082879d7a429b50ec76c466212e4aac:/examples/am7xxx-play.c diff --git a/examples/am7xxx-play.c b/examples/am7xxx-play.c index 5aa53ae..8a52ae0 100644 --- a/examples/am7xxx-play.c +++ b/examples/am7xxx-play.c @@ -17,6 +17,12 @@ * along with this program. If not, see . */ +/** + * @example examples/am7xxx-play.c + * am7xxx-play uses libavdevice, libavformat, libavcodec and libswscale to + * decode the input, encode it to jpeg and display it with libam7xxx. + */ + #include #include #include @@ -84,7 +90,7 @@ static int video_input_init(struct video_input_ctx *input_ctx, /* get information on the input stream (e.g. format, bitrate, framerate) */ ret = avformat_find_stream_info(input_format_ctx, NULL); if (ret < 0) { - fprintf(stderr, "cannot get information on the stream"); + fprintf(stderr, "cannot get information on the stream\n"); goto cleanup; } @@ -115,7 +121,7 @@ static int video_input_init(struct video_input_ctx *input_ctx, /* find the decoder for the video stream */ input_codec = avcodec_find_decoder(input_codec_ctx->codec_id); if (input_codec == NULL) { - fprintf(stderr, "input_codec is NULL!"); + fprintf(stderr, "input_codec is NULL!\n"); ret = -ENOTSUP; goto cleanup; } @@ -163,7 +169,7 @@ static int video_output_init(struct video_output_ctx *output_ctx, int ret; if (input_ctx == NULL) { - fprintf(stderr, "input_ctx must not be NULL!"); + fprintf(stderr, "input_ctx must not be NULL!\n"); ret = -EINVAL; goto out; } @@ -171,7 +177,7 @@ static int video_output_init(struct video_output_ctx *output_ctx, /* create the encoder context */ output_codec_ctx = avcodec_alloc_context3(NULL); if (output_codec_ctx == NULL) { - fprintf(stderr, "cannot allocate output codec context!"); + fprintf(stderr, "cannot allocate output codec context!\n"); ret = -ENOMEM; goto out; } @@ -193,8 +199,10 @@ static int video_output_init(struct video_output_ctx *output_ctx, output_codec_ctx->bit_rate = (input_ctx->codec_ctx)->bit_rate; output_codec_ctx->width = new_output_width; output_codec_ctx->height = new_output_height; - output_codec_ctx->time_base.num = (input_ctx->codec_ctx)->time_base.num; - output_codec_ctx->time_base.den = (input_ctx->codec_ctx)->time_base.den; + output_codec_ctx->time_base.num = + (input_ctx->format_ctx)->streams[input_ctx->video_stream_index]->time_base.num; + output_codec_ctx->time_base.den = + (input_ctx->format_ctx)->streams[input_ctx->video_stream_index]->time_base.den; /* When the raw format is requested we don't actually need to setup * and open a decoder @@ -290,7 +298,7 @@ static int am7xxx_play(const char *input_format_string, /* allocate an input frame */ picture_raw = avcodec_alloc_frame(); if (picture_raw == NULL) { - fprintf(stderr, "cannot allocate the raw picture frame!"); + fprintf(stderr, "cannot allocate the raw picture frame!\n"); ret = -ENOMEM; goto cleanup_output; } @@ -598,7 +606,7 @@ int main(int argc, char *argv[]) am7xxx_context *ctx; am7xxx_device *dev; - while ((opt = getopt(argc, argv, "f:i:o:s:uF:q:l:hp:")) != -1) { + while ((opt = getopt(argc, argv, "f:i:o:s:uF:q:l:p:h")) != -1) { switch (opt) { case 'f': input_format_string = strdup(optarg); @@ -678,11 +686,6 @@ int main(int argc, char *argv[]) log_level = AM7XXX_LOG_ERROR; } break; - case 'h': - usage(argv[0]); - ret = 0; - goto out; - break; case 'p': power_mode = atoi(optarg); switch(power_mode) { @@ -699,6 +702,11 @@ int main(int argc, char *argv[]) goto out; } break; + case 'h': + usage(argv[0]); + ret = 0; + goto out; + break; default: /* '?' */ usage(argv[0]); ret = -EINVAL;