diff options
Diffstat (limited to 'libavcodec/apiexample.c')
-rw-r--r-- | libavcodec/apiexample.c | 56 |
1 files changed, 28 insertions, 28 deletions
diff --git a/libavcodec/apiexample.c b/libavcodec/apiexample.c index b92eb6205d..7fe1c119d4 100644 --- a/libavcodec/apiexample.c +++ b/libavcodec/apiexample.c @@ -4,7 +4,7 @@ * * Note that this library only handles codecs (mpeg, mpeg4, etc...), * not file formats (avi, vob, etc...). See library 'libavformat' for the - * format handling + * format handling */ #include <stdlib.h> @@ -21,7 +21,7 @@ #define INBUF_SIZE 4096 /* - * Audio encoding example + * Audio encoding example */ void audio_encode_example(const char *filename) { @@ -43,7 +43,7 @@ void audio_encode_example(const char *filename) } c= avcodec_alloc_context(); - + /* put sample parameters */ c->bit_rate = 64000; c->sample_rate = 44100; @@ -54,7 +54,7 @@ void audio_encode_example(const char *filename) fprintf(stderr, "could not open codec\n"); exit(1); } - + /* the codec gives us the frame size, in samples */ frame_size = c->frame_size; samples = malloc(frame_size * 2 * c->channels); @@ -66,7 +66,7 @@ void audio_encode_example(const char *filename) fprintf(stderr, "could not open %s\n", filename); exit(1); } - + /* encode a single tone sound */ t = 0; tincr = 2 * M_PI * 440.0 / c->sample_rate; @@ -89,7 +89,7 @@ void audio_encode_example(const char *filename) } /* - * Audio decoding. + * Audio decoding. */ void audio_decode_example(const char *outfilename, const char *filename) { @@ -101,7 +101,7 @@ void audio_decode_example(const char *outfilename, const char *filename) uint8_t inbuf[INBUF_SIZE + FF_INPUT_BUFFER_PADDING_SIZE], *inbuf_ptr; printf("Audio decoding\n"); - + /* set end of buffer to 0 (this ensures that no overreading happens for damaged mpeg streams) */ memset(inbuf + INBUF_SIZE, 0, FF_INPUT_BUFFER_PADDING_SIZE); @@ -119,7 +119,7 @@ void audio_decode_example(const char *outfilename, const char *filename) fprintf(stderr, "could not open codec\n"); exit(1); } - + outbuf = malloc(AVCODEC_MAX_AUDIO_FRAME_SIZE); f = fopen(filename, "rb"); @@ -132,7 +132,7 @@ void audio_decode_example(const char *outfilename, const char *filename) av_free(c); exit(1); } - + /* decode until eof */ inbuf_ptr = inbuf; for(;;) { @@ -142,7 +142,7 @@ void audio_decode_example(const char *outfilename, const char *filename) inbuf_ptr = inbuf; while (size > 0) { - len = avcodec_decode_audio(c, (short *)outbuf, &out_size, + len = avcodec_decode_audio(c, (short *)outbuf, &out_size, inbuf_ptr, size); if (len < 0) { fprintf(stderr, "Error while decoding\n"); @@ -166,7 +166,7 @@ void audio_decode_example(const char *outfilename, const char *filename) } /* - * Video encoding example + * Video encoding example */ void video_encode_example(const char *filename) { @@ -188,11 +188,11 @@ void video_encode_example(const char *filename) c= avcodec_alloc_context(); picture= avcodec_alloc_frame(); - + /* put sample parameters */ c->bit_rate = 400000; /* resolution must be a multiple of two */ - c->width = 352; + c->width = 352; c->height = 288; /* frames per second */ c->time_base= (AVRational){1,25}; @@ -205,7 +205,7 @@ void video_encode_example(const char *filename) fprintf(stderr, "could not open codec\n"); exit(1); } - + /* the codec gives us the frame size, in samples */ f = fopen(filename, "wb"); @@ -213,13 +213,13 @@ void video_encode_example(const char *filename) fprintf(stderr, "could not open %s\n", filename); exit(1); } - + /* alloc image and output buffer */ outbuf_size = 100000; outbuf = malloc(outbuf_size); size = c->width * c->height; picture_buf = malloc((size * 3) / 2); /* size for YUV 420 */ - + picture->data[0] = picture_buf; picture->data[1] = picture->data[0] + size; picture->data[2] = picture->data[1] + size / 4; @@ -255,7 +255,7 @@ void video_encode_example(const char *filename) /* get the delayed frames */ for(; out_size; i++) { fflush(stdout); - + out_size = avcodec_encode_video(c, outbuf, outbuf_size, NULL); printf("write frame %3d (size=%5d)\n", i, out_size); fwrite(outbuf, 1, out_size, f); @@ -278,10 +278,10 @@ void video_encode_example(const char *filename) } /* - * Video decoding example + * Video decoding example */ -void pgm_save(unsigned char *buf,int wrap, int xsize,int ysize,char *filename) +void pgm_save(unsigned char *buf,int wrap, int xsize,int ysize,char *filename) { FILE *f; int i; @@ -330,7 +330,7 @@ void video_decode_example(const char *outfilename, const char *filename) fprintf(stderr, "could not open codec\n"); exit(1); } - + /* the codec gives us the frame size, in samples */ f = fopen(filename, "rb"); @@ -338,7 +338,7 @@ void video_decode_example(const char *outfilename, const char *filename) fprintf(stderr, "could not open %s\n", filename); exit(1); } - + frame = 0; for(;;) { size = fread(inbuf, 1, INBUF_SIZE, f); @@ -347,7 +347,7 @@ void video_decode_example(const char *outfilename, const char *filename) /* NOTE1: some codecs are stream based (mpegvideo, mpegaudio) and this is the only method to use them because you cannot - know the compressed data size before analysing it. + know the compressed data size before analysing it. BUT some other codecs (msmpeg4, mpeg4) are inherently frame based, so you must call them with all the data for one @@ -362,7 +362,7 @@ void video_decode_example(const char *outfilename, const char *filename) feed decoder and see if it could decode a frame */ inbuf_ptr = inbuf; while (size > 0) { - len = avcodec_decode_video(c, picture, &got_picture, + len = avcodec_decode_video(c, picture, &got_picture, inbuf_ptr, size); if (len < 0) { fprintf(stderr, "Error while decoding frame %d\n", frame); @@ -375,7 +375,7 @@ void video_decode_example(const char *outfilename, const char *filename) /* the picture is allocated by the decoder. no need to free it */ snprintf(buf, sizeof(buf), outfilename, frame); - pgm_save(picture->data[0], picture->linesize[0], + pgm_save(picture->data[0], picture->linesize[0], c->width, c->height, buf); frame++; } @@ -387,20 +387,20 @@ void video_decode_example(const char *outfilename, const char *filename) /* some codecs, such as MPEG, transmit the I and P frame with a latency of one frame. You must do the following to have a chance to get the last frame of the video */ - len = avcodec_decode_video(c, picture, &got_picture, + len = avcodec_decode_video(c, picture, &got_picture, NULL, 0); if (got_picture) { printf("saving last frame %3d\n", frame); fflush(stdout); - + /* the picture is allocated by the decoder. no need to free it */ snprintf(buf, sizeof(buf), outfilename, frame); - pgm_save(picture->data[0], picture->linesize[0], + pgm_save(picture->data[0], picture->linesize[0], c->width, c->height, buf); frame++; } - + fclose(f); avcodec_close(c); |