annotate apiexample.c @ 8130:c45366b01126 libavcodec

ARM: fix j_rev_dct_ARM This is a bugfix for ARMv4 assembly implementation of 'j_rev_dct' function. The problem was in the incorrect partially empty row detection. Even if the first two coefficients in the row were nonzero, it handled this just like the case with only the first nonzero coefficient. Now this function produces exactly the same output as the stripped down reference C version of 'j_rev_dct' (with the nested checks like 'if (d6) { if (d2) { ...' always evaluated as true, avoiding shortcut branches).
author mru
date Wed, 12 Nov 2008 20:23:36 +0000
parents 98d37cfc40a1
children e9d9d946f213
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3699
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 2967
diff changeset
1 /*
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 2967
diff changeset
2 * copyright (c) 2001 Fabrice Bellard
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 2967
diff changeset
3 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3699
diff changeset
4 * This file is part of FFmpeg.
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3699
diff changeset
5 *
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3699
diff changeset
6 * FFmpeg is free software; you can redistribute it and/or
3699
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 2967
diff changeset
7 * modify it under the terms of the GNU Lesser General Public
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 2967
diff changeset
8 * License as published by the Free Software Foundation; either
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3699
diff changeset
9 * version 2.1 of the License, or (at your option) any later version.
3699
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 2967
diff changeset
10 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3699
diff changeset
11 * FFmpeg is distributed in the hope that it will be useful,
3699
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 2967
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 2967
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 2967
diff changeset
14 * Lesser General Public License for more details.
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 2967
diff changeset
15 *
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 2967
diff changeset
16 * You should have received a copy of the GNU Lesser General Public
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3699
diff changeset
17 * License along with FFmpeg; if not, write to the Free Software
3699
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 2967
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 2967
diff changeset
19 */
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 2967
diff changeset
20
1106
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
21 /**
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
22 * @file apiexample.c
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
23 * avcodec API use example.
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
24 *
986e461dc072 Initial revision
glantau
parents:
diff changeset
25 * Note that this library only handles codecs (mpeg, mpeg4, etc...),
1427
3a6d613c88d8 spelling fix
bellard
parents: 1394
diff changeset
26 * not file formats (avi, vob, etc...). See library 'libavformat' for the
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
27 * format handling
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
28 */
1106
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
29
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
30 #include <stdlib.h>
986e461dc072 Initial revision
glantau
parents:
diff changeset
31 #include <stdio.h>
986e461dc072 Initial revision
glantau
parents:
diff changeset
32 #include <string.h>
4545
219255141aa1 Remove a non-C dependency (being M_PI) from the libavcodec example.
takis
parents: 3947
diff changeset
33
1059
890b9fb44e84 * still unfinished code for Options
kabi
parents: 925
diff changeset
34 #ifdef HAVE_AV_CONFIG_H
890b9fb44e84 * still unfinished code for Options
kabi
parents: 925
diff changeset
35 #undef HAVE_AV_CONFIG_H
890b9fb44e84 * still unfinished code for Options
kabi
parents: 925
diff changeset
36 #endif
890b9fb44e84 * still unfinished code for Options
kabi
parents: 925
diff changeset
37
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
38 #include "avcodec.h"
7982
98d37cfc40a1 Use M_PI from libavutil/mathematics.h instead of defining PI ourselves
reimar
parents: 5137
diff changeset
39 #include "libavutil/mathematics.h"
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
40
986e461dc072 Initial revision
glantau
parents:
diff changeset
41 #define INBUF_SIZE 4096
986e461dc072 Initial revision
glantau
parents:
diff changeset
42
986e461dc072 Initial revision
glantau
parents:
diff changeset
43 /*
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
44 * Audio encoding example
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
45 */
986e461dc072 Initial revision
glantau
parents:
diff changeset
46 void audio_encode_example(const char *filename)
986e461dc072 Initial revision
glantau
parents:
diff changeset
47 {
986e461dc072 Initial revision
glantau
parents:
diff changeset
48 AVCodec *codec;
685
44a1dab0205c fixing apiexample
michaelni
parents: 71
diff changeset
49 AVCodecContext *c= NULL;
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
50 int frame_size, i, j, out_size, outbuf_size;
986e461dc072 Initial revision
glantau
parents:
diff changeset
51 FILE *f;
986e461dc072 Initial revision
glantau
parents:
diff changeset
52 short *samples;
986e461dc072 Initial revision
glantau
parents:
diff changeset
53 float t, tincr;
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 1059
diff changeset
54 uint8_t *outbuf;
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
55
986e461dc072 Initial revision
glantau
parents:
diff changeset
56 printf("Audio encoding\n");
986e461dc072 Initial revision
glantau
parents:
diff changeset
57
986e461dc072 Initial revision
glantau
parents:
diff changeset
58 /* find the MP2 encoder */
986e461dc072 Initial revision
glantau
parents:
diff changeset
59 codec = avcodec_find_encoder(CODEC_ID_MP2);
986e461dc072 Initial revision
glantau
parents:
diff changeset
60 if (!codec) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
61 fprintf(stderr, "codec not found\n");
986e461dc072 Initial revision
glantau
parents:
diff changeset
62 exit(1);
986e461dc072 Initial revision
glantau
parents:
diff changeset
63 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
64
685
44a1dab0205c fixing apiexample
michaelni
parents: 71
diff changeset
65 c= avcodec_alloc_context();
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
66
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
67 /* put sample parameters */
986e461dc072 Initial revision
glantau
parents:
diff changeset
68 c->bit_rate = 64000;
986e461dc072 Initial revision
glantau
parents:
diff changeset
69 c->sample_rate = 44100;
986e461dc072 Initial revision
glantau
parents:
diff changeset
70 c->channels = 2;
986e461dc072 Initial revision
glantau
parents:
diff changeset
71
986e461dc072 Initial revision
glantau
parents:
diff changeset
72 /* open it */
986e461dc072 Initial revision
glantau
parents:
diff changeset
73 if (avcodec_open(c, codec) < 0) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
74 fprintf(stderr, "could not open codec\n");
986e461dc072 Initial revision
glantau
parents:
diff changeset
75 exit(1);
986e461dc072 Initial revision
glantau
parents:
diff changeset
76 }
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
77
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
78 /* the codec gives us the frame size, in samples */
986e461dc072 Initial revision
glantau
parents:
diff changeset
79 frame_size = c->frame_size;
986e461dc072 Initial revision
glantau
parents:
diff changeset
80 samples = malloc(frame_size * 2 * c->channels);
986e461dc072 Initial revision
glantau
parents:
diff changeset
81 outbuf_size = 10000;
986e461dc072 Initial revision
glantau
parents:
diff changeset
82 outbuf = malloc(outbuf_size);
986e461dc072 Initial revision
glantau
parents:
diff changeset
83
1931
902556e6d21d writing corrupt files on MinGW patch by (Matthias Fritschi <choi at netlabs dot org>)
michael
parents: 1427
diff changeset
84 f = fopen(filename, "wb");
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
85 if (!f) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
86 fprintf(stderr, "could not open %s\n", filename);
986e461dc072 Initial revision
glantau
parents:
diff changeset
87 exit(1);
986e461dc072 Initial revision
glantau
parents:
diff changeset
88 }
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
89
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
90 /* encode a single tone sound */
986e461dc072 Initial revision
glantau
parents:
diff changeset
91 t = 0;
7982
98d37cfc40a1 Use M_PI from libavutil/mathematics.h instead of defining PI ourselves
reimar
parents: 5137
diff changeset
92 tincr = 2 * M_PI * 440.0 / c->sample_rate;
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
93 for(i=0;i<200;i++) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
94 for(j=0;j<frame_size;j++) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
95 samples[2*j] = (int)(sin(t) * 10000);
986e461dc072 Initial revision
glantau
parents:
diff changeset
96 samples[2*j+1] = samples[2*j];
986e461dc072 Initial revision
glantau
parents:
diff changeset
97 t += tincr;
986e461dc072 Initial revision
glantau
parents:
diff changeset
98 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
99 /* encode the samples */
986e461dc072 Initial revision
glantau
parents:
diff changeset
100 out_size = avcodec_encode_audio(c, outbuf, outbuf_size, samples);
986e461dc072 Initial revision
glantau
parents:
diff changeset
101 fwrite(outbuf, 1, out_size, f);
986e461dc072 Initial revision
glantau
parents:
diff changeset
102 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
103 fclose(f);
986e461dc072 Initial revision
glantau
parents:
diff changeset
104 free(outbuf);
986e461dc072 Initial revision
glantau
parents:
diff changeset
105 free(samples);
986e461dc072 Initial revision
glantau
parents:
diff changeset
106
986e461dc072 Initial revision
glantau
parents:
diff changeset
107 avcodec_close(c);
2517
3d8bbb8e7156 use av_free() instead of free() where it's meant to.
mmu_man
parents: 2423
diff changeset
108 av_free(c);
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
109 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
110
986e461dc072 Initial revision
glantau
parents:
diff changeset
111 /*
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
112 * Audio decoding.
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
113 */
986e461dc072 Initial revision
glantau
parents:
diff changeset
114 void audio_decode_example(const char *outfilename, const char *filename)
986e461dc072 Initial revision
glantau
parents:
diff changeset
115 {
986e461dc072 Initial revision
glantau
parents:
diff changeset
116 AVCodec *codec;
685
44a1dab0205c fixing apiexample
michaelni
parents: 71
diff changeset
117 AVCodecContext *c= NULL;
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
118 int out_size, size, len;
986e461dc072 Initial revision
glantau
parents:
diff changeset
119 FILE *f, *outfile;
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 1059
diff changeset
120 uint8_t *outbuf;
1394
951a4448c05a FF_INPUT_BUFFER_PADDING_SIZE
michaelni
parents: 1373
diff changeset
121 uint8_t inbuf[INBUF_SIZE + FF_INPUT_BUFFER_PADDING_SIZE], *inbuf_ptr;
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
122
986e461dc072 Initial revision
glantau
parents:
diff changeset
123 printf("Audio decoding\n");
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
124
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
125 /* find the mpeg audio decoder */
986e461dc072 Initial revision
glantau
parents:
diff changeset
126 codec = avcodec_find_decoder(CODEC_ID_MP2);
986e461dc072 Initial revision
glantau
parents:
diff changeset
127 if (!codec) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
128 fprintf(stderr, "codec not found\n");
986e461dc072 Initial revision
glantau
parents:
diff changeset
129 exit(1);
986e461dc072 Initial revision
glantau
parents:
diff changeset
130 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
131
685
44a1dab0205c fixing apiexample
michaelni
parents: 71
diff changeset
132 c= avcodec_alloc_context();
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
133
986e461dc072 Initial revision
glantau
parents:
diff changeset
134 /* open it */
986e461dc072 Initial revision
glantau
parents:
diff changeset
135 if (avcodec_open(c, codec) < 0) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
136 fprintf(stderr, "could not open codec\n");
986e461dc072 Initial revision
glantau
parents:
diff changeset
137 exit(1);
986e461dc072 Initial revision
glantau
parents:
diff changeset
138 }
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
139
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
140 outbuf = malloc(AVCODEC_MAX_AUDIO_FRAME_SIZE);
986e461dc072 Initial revision
glantau
parents:
diff changeset
141
1931
902556e6d21d writing corrupt files on MinGW patch by (Matthias Fritschi <choi at netlabs dot org>)
michael
parents: 1427
diff changeset
142 f = fopen(filename, "rb");
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
143 if (!f) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
144 fprintf(stderr, "could not open %s\n", filename);
986e461dc072 Initial revision
glantau
parents:
diff changeset
145 exit(1);
986e461dc072 Initial revision
glantau
parents:
diff changeset
146 }
1931
902556e6d21d writing corrupt files on MinGW patch by (Matthias Fritschi <choi at netlabs dot org>)
michael
parents: 1427
diff changeset
147 outfile = fopen(outfilename, "wb");
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
148 if (!outfile) {
2517
3d8bbb8e7156 use av_free() instead of free() where it's meant to.
mmu_man
parents: 2423
diff changeset
149 av_free(c);
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
150 exit(1);
986e461dc072 Initial revision
glantau
parents:
diff changeset
151 }
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
152
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
153 /* decode until eof */
986e461dc072 Initial revision
glantau
parents:
diff changeset
154 inbuf_ptr = inbuf;
986e461dc072 Initial revision
glantau
parents:
diff changeset
155 for(;;) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
156 size = fread(inbuf, 1, INBUF_SIZE, f);
986e461dc072 Initial revision
glantau
parents:
diff changeset
157 if (size == 0)
986e461dc072 Initial revision
glantau
parents:
diff changeset
158 break;
986e461dc072 Initial revision
glantau
parents:
diff changeset
159
986e461dc072 Initial revision
glantau
parents:
diff changeset
160 inbuf_ptr = inbuf;
986e461dc072 Initial revision
glantau
parents:
diff changeset
161 while (size > 0) {
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
162 len = avcodec_decode_audio(c, (short *)outbuf, &out_size,
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
163 inbuf_ptr, size);
986e461dc072 Initial revision
glantau
parents:
diff changeset
164 if (len < 0) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
165 fprintf(stderr, "Error while decoding\n");
986e461dc072 Initial revision
glantau
parents:
diff changeset
166 exit(1);
986e461dc072 Initial revision
glantau
parents:
diff changeset
167 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
168 if (out_size > 0) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
169 /* if a frame has been decoded, output it */
986e461dc072 Initial revision
glantau
parents:
diff changeset
170 fwrite(outbuf, 1, out_size, outfile);
986e461dc072 Initial revision
glantau
parents:
diff changeset
171 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
172 size -= len;
986e461dc072 Initial revision
glantau
parents:
diff changeset
173 inbuf_ptr += len;
986e461dc072 Initial revision
glantau
parents:
diff changeset
174 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
175 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
176
986e461dc072 Initial revision
glantau
parents:
diff changeset
177 fclose(outfile);
986e461dc072 Initial revision
glantau
parents:
diff changeset
178 fclose(f);
986e461dc072 Initial revision
glantau
parents:
diff changeset
179 free(outbuf);
986e461dc072 Initial revision
glantau
parents:
diff changeset
180
986e461dc072 Initial revision
glantau
parents:
diff changeset
181 avcodec_close(c);
2517
3d8bbb8e7156 use av_free() instead of free() where it's meant to.
mmu_man
parents: 2423
diff changeset
182 av_free(c);
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
183 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
184
986e461dc072 Initial revision
glantau
parents:
diff changeset
185 /*
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
186 * Video encoding example
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
187 */
986e461dc072 Initial revision
glantau
parents:
diff changeset
188 void video_encode_example(const char *filename)
986e461dc072 Initial revision
glantau
parents:
diff changeset
189 {
986e461dc072 Initial revision
glantau
parents:
diff changeset
190 AVCodec *codec;
685
44a1dab0205c fixing apiexample
michaelni
parents: 71
diff changeset
191 AVCodecContext *c= NULL;
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
192 int i, out_size, size, x, y, outbuf_size;
986e461dc072 Initial revision
glantau
parents:
diff changeset
193 FILE *f;
925
7fccaa0d699d AVVideoFrame -> AVFrame
michaelni
parents: 919
diff changeset
194 AVFrame *picture;
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 1059
diff changeset
195 uint8_t *outbuf, *picture_buf;
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
196
986e461dc072 Initial revision
glantau
parents:
diff changeset
197 printf("Video encoding\n");
986e461dc072 Initial revision
glantau
parents:
diff changeset
198
986e461dc072 Initial revision
glantau
parents:
diff changeset
199 /* find the mpeg1 video encoder */
986e461dc072 Initial revision
glantau
parents:
diff changeset
200 codec = avcodec_find_encoder(CODEC_ID_MPEG1VIDEO);
986e461dc072 Initial revision
glantau
parents:
diff changeset
201 if (!codec) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
202 fprintf(stderr, "codec not found\n");
986e461dc072 Initial revision
glantau
parents:
diff changeset
203 exit(1);
986e461dc072 Initial revision
glantau
parents:
diff changeset
204 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
205
685
44a1dab0205c fixing apiexample
michaelni
parents: 71
diff changeset
206 c= avcodec_alloc_context();
925
7fccaa0d699d AVVideoFrame -> AVFrame
michaelni
parents: 919
diff changeset
207 picture= avcodec_alloc_frame();
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
208
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
209 /* put sample parameters */
986e461dc072 Initial revision
glantau
parents:
diff changeset
210 c->bit_rate = 400000;
986e461dc072 Initial revision
glantau
parents:
diff changeset
211 /* resolution must be a multiple of two */
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
212 c->width = 352;
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
213 c->height = 288;
986e461dc072 Initial revision
glantau
parents:
diff changeset
214 /* frames per second */
2637
ef44d24680d1 switch to native time bases
michael
parents: 2552
diff changeset
215 c->time_base= (AVRational){1,25};
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
216 c->gop_size = 10; /* emit one intra frame every ten frames */
1373
b47a402bbe7f last frames & b frames encoding fix
michaelni
parents: 1126
diff changeset
217 c->max_b_frames=1;
2760
dfcfaeed1679 apiexample fix by (Chip: szarlada, freemail hu)
michael
parents: 2637
diff changeset
218 c->pix_fmt = PIX_FMT_YUV420P;
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
219
986e461dc072 Initial revision
glantau
parents:
diff changeset
220 /* open it */
986e461dc072 Initial revision
glantau
parents:
diff changeset
221 if (avcodec_open(c, codec) < 0) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
222 fprintf(stderr, "could not open codec\n");
986e461dc072 Initial revision
glantau
parents:
diff changeset
223 exit(1);
986e461dc072 Initial revision
glantau
parents:
diff changeset
224 }
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
225
1931
902556e6d21d writing corrupt files on MinGW patch by (Matthias Fritschi <choi at netlabs dot org>)
michael
parents: 1427
diff changeset
226 f = fopen(filename, "wb");
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
227 if (!f) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
228 fprintf(stderr, "could not open %s\n", filename);
986e461dc072 Initial revision
glantau
parents:
diff changeset
229 exit(1);
986e461dc072 Initial revision
glantau
parents:
diff changeset
230 }
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
231
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
232 /* alloc image and output buffer */
986e461dc072 Initial revision
glantau
parents:
diff changeset
233 outbuf_size = 100000;
986e461dc072 Initial revision
glantau
parents:
diff changeset
234 outbuf = malloc(outbuf_size);
986e461dc072 Initial revision
glantau
parents:
diff changeset
235 size = c->width * c->height;
986e461dc072 Initial revision
glantau
parents:
diff changeset
236 picture_buf = malloc((size * 3) / 2); /* size for YUV 420 */
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
237
919
c87eee6da7b1 fixing api-example
michaelni
parents: 895
diff changeset
238 picture->data[0] = picture_buf;
c87eee6da7b1 fixing api-example
michaelni
parents: 895
diff changeset
239 picture->data[1] = picture->data[0] + size;
c87eee6da7b1 fixing api-example
michaelni
parents: 895
diff changeset
240 picture->data[2] = picture->data[1] + size / 4;
c87eee6da7b1 fixing api-example
michaelni
parents: 895
diff changeset
241 picture->linesize[0] = c->width;
c87eee6da7b1 fixing api-example
michaelni
parents: 895
diff changeset
242 picture->linesize[1] = c->width / 2;
c87eee6da7b1 fixing api-example
michaelni
parents: 895
diff changeset
243 picture->linesize[2] = c->width / 2;
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
244
986e461dc072 Initial revision
glantau
parents:
diff changeset
245 /* encode 1 second of video */
986e461dc072 Initial revision
glantau
parents:
diff changeset
246 for(i=0;i<25;i++) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
247 fflush(stdout);
986e461dc072 Initial revision
glantau
parents:
diff changeset
248 /* prepare a dummy image */
986e461dc072 Initial revision
glantau
parents:
diff changeset
249 /* Y */
986e461dc072 Initial revision
glantau
parents:
diff changeset
250 for(y=0;y<c->height;y++) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
251 for(x=0;x<c->width;x++) {
919
c87eee6da7b1 fixing api-example
michaelni
parents: 895
diff changeset
252 picture->data[0][y * picture->linesize[0] + x] = x + y + i * 3;
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
253 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
254 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
255
986e461dc072 Initial revision
glantau
parents:
diff changeset
256 /* Cb and Cr */
986e461dc072 Initial revision
glantau
parents:
diff changeset
257 for(y=0;y<c->height/2;y++) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
258 for(x=0;x<c->width/2;x++) {
919
c87eee6da7b1 fixing api-example
michaelni
parents: 895
diff changeset
259 picture->data[1][y * picture->linesize[1] + x] = 128 + y + i * 2;
c87eee6da7b1 fixing api-example
michaelni
parents: 895
diff changeset
260 picture->data[2][y * picture->linesize[2] + x] = 64 + x + i * 5;
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
261 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
262 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
263
986e461dc072 Initial revision
glantau
parents:
diff changeset
264 /* encode the image */
919
c87eee6da7b1 fixing api-example
michaelni
parents: 895
diff changeset
265 out_size = avcodec_encode_video(c, outbuf, outbuf_size, picture);
1373
b47a402bbe7f last frames & b frames encoding fix
michaelni
parents: 1126
diff changeset
266 printf("encoding frame %3d (size=%5d)\n", i, out_size);
b47a402bbe7f last frames & b frames encoding fix
michaelni
parents: 1126
diff changeset
267 fwrite(outbuf, 1, out_size, f);
b47a402bbe7f last frames & b frames encoding fix
michaelni
parents: 1126
diff changeset
268 }
b47a402bbe7f last frames & b frames encoding fix
michaelni
parents: 1126
diff changeset
269
b47a402bbe7f last frames & b frames encoding fix
michaelni
parents: 1126
diff changeset
270 /* get the delayed frames */
b47a402bbe7f last frames & b frames encoding fix
michaelni
parents: 1126
diff changeset
271 for(; out_size; i++) {
b47a402bbe7f last frames & b frames encoding fix
michaelni
parents: 1126
diff changeset
272 fflush(stdout);
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
273
1373
b47a402bbe7f last frames & b frames encoding fix
michaelni
parents: 1126
diff changeset
274 out_size = avcodec_encode_video(c, outbuf, outbuf_size, NULL);
b47a402bbe7f last frames & b frames encoding fix
michaelni
parents: 1126
diff changeset
275 printf("write frame %3d (size=%5d)\n", i, out_size);
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
276 fwrite(outbuf, 1, out_size, f);
986e461dc072 Initial revision
glantau
parents:
diff changeset
277 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
278
986e461dc072 Initial revision
glantau
parents:
diff changeset
279 /* add sequence end code to have a real mpeg file */
986e461dc072 Initial revision
glantau
parents:
diff changeset
280 outbuf[0] = 0x00;
986e461dc072 Initial revision
glantau
parents:
diff changeset
281 outbuf[1] = 0x00;
986e461dc072 Initial revision
glantau
parents:
diff changeset
282 outbuf[2] = 0x01;
986e461dc072 Initial revision
glantau
parents:
diff changeset
283 outbuf[3] = 0xb7;
986e461dc072 Initial revision
glantau
parents:
diff changeset
284 fwrite(outbuf, 1, 4, f);
986e461dc072 Initial revision
glantau
parents:
diff changeset
285 fclose(f);
986e461dc072 Initial revision
glantau
parents:
diff changeset
286 free(picture_buf);
986e461dc072 Initial revision
glantau
parents:
diff changeset
287 free(outbuf);
986e461dc072 Initial revision
glantau
parents:
diff changeset
288
986e461dc072 Initial revision
glantau
parents:
diff changeset
289 avcodec_close(c);
2517
3d8bbb8e7156 use av_free() instead of free() where it's meant to.
mmu_man
parents: 2423
diff changeset
290 av_free(c);
3d8bbb8e7156 use av_free() instead of free() where it's meant to.
mmu_man
parents: 2423
diff changeset
291 av_free(picture);
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
292 printf("\n");
986e461dc072 Initial revision
glantau
parents:
diff changeset
293 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
294
986e461dc072 Initial revision
glantau
parents:
diff changeset
295 /*
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
296 * Video decoding example
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
297 */
986e461dc072 Initial revision
glantau
parents:
diff changeset
298
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
299 void pgm_save(unsigned char *buf,int wrap, int xsize,int ysize,char *filename)
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
300 {
986e461dc072 Initial revision
glantau
parents:
diff changeset
301 FILE *f;
986e461dc072 Initial revision
glantau
parents:
diff changeset
302 int i;
986e461dc072 Initial revision
glantau
parents:
diff changeset
303
986e461dc072 Initial revision
glantau
parents:
diff changeset
304 f=fopen(filename,"w");
986e461dc072 Initial revision
glantau
parents:
diff changeset
305 fprintf(f,"P5\n%d %d\n%d\n",xsize,ysize,255);
986e461dc072 Initial revision
glantau
parents:
diff changeset
306 for(i=0;i<ysize;i++)
986e461dc072 Initial revision
glantau
parents:
diff changeset
307 fwrite(buf + i * wrap,1,xsize,f);
986e461dc072 Initial revision
glantau
parents:
diff changeset
308 fclose(f);
986e461dc072 Initial revision
glantau
parents:
diff changeset
309 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
310
986e461dc072 Initial revision
glantau
parents:
diff changeset
311 void video_decode_example(const char *outfilename, const char *filename)
986e461dc072 Initial revision
glantau
parents:
diff changeset
312 {
986e461dc072 Initial revision
glantau
parents:
diff changeset
313 AVCodec *codec;
685
44a1dab0205c fixing apiexample
michaelni
parents: 71
diff changeset
314 AVCodecContext *c= NULL;
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
315 int frame, size, got_picture, len;
986e461dc072 Initial revision
glantau
parents:
diff changeset
316 FILE *f;
925
7fccaa0d699d AVVideoFrame -> AVFrame
michaelni
parents: 919
diff changeset
317 AVFrame *picture;
1394
951a4448c05a FF_INPUT_BUFFER_PADDING_SIZE
michaelni
parents: 1373
diff changeset
318 uint8_t inbuf[INBUF_SIZE + FF_INPUT_BUFFER_PADDING_SIZE], *inbuf_ptr;
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
319 char buf[1024];
986e461dc072 Initial revision
glantau
parents:
diff changeset
320
1394
951a4448c05a FF_INPUT_BUFFER_PADDING_SIZE
michaelni
parents: 1373
diff changeset
321 /* set end of buffer to 0 (this ensures that no overreading happens for damaged mpeg streams) */
951a4448c05a FF_INPUT_BUFFER_PADDING_SIZE
michaelni
parents: 1373
diff changeset
322 memset(inbuf + INBUF_SIZE, 0, FF_INPUT_BUFFER_PADDING_SIZE);
951a4448c05a FF_INPUT_BUFFER_PADDING_SIZE
michaelni
parents: 1373
diff changeset
323
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
324 printf("Video decoding\n");
986e461dc072 Initial revision
glantau
parents:
diff changeset
325
986e461dc072 Initial revision
glantau
parents:
diff changeset
326 /* find the mpeg1 video decoder */
986e461dc072 Initial revision
glantau
parents:
diff changeset
327 codec = avcodec_find_decoder(CODEC_ID_MPEG1VIDEO);
986e461dc072 Initial revision
glantau
parents:
diff changeset
328 if (!codec) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
329 fprintf(stderr, "codec not found\n");
986e461dc072 Initial revision
glantau
parents:
diff changeset
330 exit(1);
986e461dc072 Initial revision
glantau
parents:
diff changeset
331 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
332
685
44a1dab0205c fixing apiexample
michaelni
parents: 71
diff changeset
333 c= avcodec_alloc_context();
925
7fccaa0d699d AVVideoFrame -> AVFrame
michaelni
parents: 919
diff changeset
334 picture= avcodec_alloc_frame();
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
335
895
1a5926aeed5f apiexample doesnt send complete frames to the codec
michaelni
parents: 685
diff changeset
336 if(codec->capabilities&CODEC_CAP_TRUNCATED)
5127
4dbe6578f811 misc spelling fixes
diego
parents: 4564
diff changeset
337 c->flags|= CODEC_FLAG_TRUNCATED; /* we do not send complete frames */
895
1a5926aeed5f apiexample doesnt send complete frames to the codec
michaelni
parents: 685
diff changeset
338
5127
4dbe6578f811 misc spelling fixes
diego
parents: 4564
diff changeset
339 /* For some codecs, such as msmpeg4 and mpeg4, width and height
4dbe6578f811 misc spelling fixes
diego
parents: 4564
diff changeset
340 MUST be initialized there because this information is not
4dbe6578f811 misc spelling fixes
diego
parents: 4564
diff changeset
341 available in the bitstream. */
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
342
986e461dc072 Initial revision
glantau
parents:
diff changeset
343 /* open it */
986e461dc072 Initial revision
glantau
parents:
diff changeset
344 if (avcodec_open(c, codec) < 0) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
345 fprintf(stderr, "could not open codec\n");
986e461dc072 Initial revision
glantau
parents:
diff changeset
346 exit(1);
986e461dc072 Initial revision
glantau
parents:
diff changeset
347 }
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
348
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
349 /* the codec gives us the frame size, in samples */
986e461dc072 Initial revision
glantau
parents:
diff changeset
350
1931
902556e6d21d writing corrupt files on MinGW patch by (Matthias Fritschi <choi at netlabs dot org>)
michael
parents: 1427
diff changeset
351 f = fopen(filename, "rb");
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
352 if (!f) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
353 fprintf(stderr, "could not open %s\n", filename);
986e461dc072 Initial revision
glantau
parents:
diff changeset
354 exit(1);
986e461dc072 Initial revision
glantau
parents:
diff changeset
355 }
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
356
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
357 frame = 0;
986e461dc072 Initial revision
glantau
parents:
diff changeset
358 for(;;) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
359 size = fread(inbuf, 1, INBUF_SIZE, f);
986e461dc072 Initial revision
glantau
parents:
diff changeset
360 if (size == 0)
986e461dc072 Initial revision
glantau
parents:
diff changeset
361 break;
986e461dc072 Initial revision
glantau
parents:
diff changeset
362
986e461dc072 Initial revision
glantau
parents:
diff changeset
363 /* NOTE1: some codecs are stream based (mpegvideo, mpegaudio)
986e461dc072 Initial revision
glantau
parents:
diff changeset
364 and this is the only method to use them because you cannot
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
365 know the compressed data size before analysing it.
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
366
71
79be2c581c01 changed opendivx to mpeg4
glantau
parents: 0
diff changeset
367 BUT some other codecs (msmpeg4, mpeg4) are inherently frame
79be2c581c01 changed opendivx to mpeg4
glantau
parents: 0
diff changeset
368 based, so you must call them with all the data for one
79be2c581c01 changed opendivx to mpeg4
glantau
parents: 0
diff changeset
369 frame exactly. You must also initialize 'width' and
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
370 'height' before initializing them. */
986e461dc072 Initial revision
glantau
parents:
diff changeset
371
986e461dc072 Initial revision
glantau
parents:
diff changeset
372 /* NOTE2: some codecs allow the raw parameters (frame size,
986e461dc072 Initial revision
glantau
parents:
diff changeset
373 sample rate) to be changed at any frame. We handle this, so
986e461dc072 Initial revision
glantau
parents:
diff changeset
374 you should also take care of it */
986e461dc072 Initial revision
glantau
parents:
diff changeset
375
986e461dc072 Initial revision
glantau
parents:
diff changeset
376 /* here, we use a stream based decoder (mpeg1video), so we
986e461dc072 Initial revision
glantau
parents:
diff changeset
377 feed decoder and see if it could decode a frame */
986e461dc072 Initial revision
glantau
parents:
diff changeset
378 inbuf_ptr = inbuf;
986e461dc072 Initial revision
glantau
parents:
diff changeset
379 while (size > 0) {
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
380 len = avcodec_decode_video(c, picture, &got_picture,
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
381 inbuf_ptr, size);
986e461dc072 Initial revision
glantau
parents:
diff changeset
382 if (len < 0) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
383 fprintf(stderr, "Error while decoding frame %d\n", frame);
986e461dc072 Initial revision
glantau
parents:
diff changeset
384 exit(1);
986e461dc072 Initial revision
glantau
parents:
diff changeset
385 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
386 if (got_picture) {
1373
b47a402bbe7f last frames & b frames encoding fix
michaelni
parents: 1126
diff changeset
387 printf("saving frame %3d\n", frame);
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
388 fflush(stdout);
986e461dc072 Initial revision
glantau
parents:
diff changeset
389
986e461dc072 Initial revision
glantau
parents:
diff changeset
390 /* the picture is allocated by the decoder. no need to
986e461dc072 Initial revision
glantau
parents:
diff changeset
391 free it */
986e461dc072 Initial revision
glantau
parents:
diff changeset
392 snprintf(buf, sizeof(buf), outfilename, frame);
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
393 pgm_save(picture->data[0], picture->linesize[0],
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
394 c->width, c->height, buf);
986e461dc072 Initial revision
glantau
parents:
diff changeset
395 frame++;
986e461dc072 Initial revision
glantau
parents:
diff changeset
396 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
397 size -= len;
986e461dc072 Initial revision
glantau
parents:
diff changeset
398 inbuf_ptr += len;
986e461dc072 Initial revision
glantau
parents:
diff changeset
399 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
400 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
401
986e461dc072 Initial revision
glantau
parents:
diff changeset
402 /* some codecs, such as MPEG, transmit the I and P frame with a
986e461dc072 Initial revision
glantau
parents:
diff changeset
403 latency of one frame. You must do the following to have a
986e461dc072 Initial revision
glantau
parents:
diff changeset
404 chance to get the last frame of the video */
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
405 len = avcodec_decode_video(c, picture, &got_picture,
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
406 NULL, 0);
986e461dc072 Initial revision
glantau
parents:
diff changeset
407 if (got_picture) {
1373
b47a402bbe7f last frames & b frames encoding fix
michaelni
parents: 1126
diff changeset
408 printf("saving last frame %3d\n", frame);
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
409 fflush(stdout);
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
410
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
411 /* the picture is allocated by the decoder. no need to
986e461dc072 Initial revision
glantau
parents:
diff changeset
412 free it */
986e461dc072 Initial revision
glantau
parents:
diff changeset
413 snprintf(buf, sizeof(buf), outfilename, frame);
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
414 pgm_save(picture->data[0], picture->linesize[0],
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
415 c->width, c->height, buf);
986e461dc072 Initial revision
glantau
parents:
diff changeset
416 frame++;
986e461dc072 Initial revision
glantau
parents:
diff changeset
417 }
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2760
diff changeset
418
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
419 fclose(f);
986e461dc072 Initial revision
glantau
parents:
diff changeset
420
986e461dc072 Initial revision
glantau
parents:
diff changeset
421 avcodec_close(c);
2517
3d8bbb8e7156 use av_free() instead of free() where it's meant to.
mmu_man
parents: 2423
diff changeset
422 av_free(c);
3d8bbb8e7156 use av_free() instead of free() where it's meant to.
mmu_man
parents: 2423
diff changeset
423 av_free(picture);
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
424 printf("\n");
986e461dc072 Initial revision
glantau
parents:
diff changeset
425 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
426
986e461dc072 Initial revision
glantau
parents:
diff changeset
427 int main(int argc, char **argv)
986e461dc072 Initial revision
glantau
parents:
diff changeset
428 {
986e461dc072 Initial revision
glantau
parents:
diff changeset
429 const char *filename;
986e461dc072 Initial revision
glantau
parents:
diff changeset
430
986e461dc072 Initial revision
glantau
parents:
diff changeset
431 /* must be called before using avcodec lib */
986e461dc072 Initial revision
glantau
parents:
diff changeset
432 avcodec_init();
986e461dc072 Initial revision
glantau
parents:
diff changeset
433
5137
0134da1737d0 Improve understanding ofavcodec_find_decoder()
benoit
parents: 5127
diff changeset
434 /* register all the codecs */
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
435 avcodec_register_all();
1059
890b9fb44e84 * still unfinished code for Options
kabi
parents: 925
diff changeset
436
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
437 if (argc <= 1) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
438 audio_encode_example("/tmp/test.mp2");
986e461dc072 Initial revision
glantau
parents:
diff changeset
439 audio_decode_example("/tmp/test.sw", "/tmp/test.mp2");
986e461dc072 Initial revision
glantau
parents:
diff changeset
440
986e461dc072 Initial revision
glantau
parents:
diff changeset
441 video_encode_example("/tmp/test.mpg");
986e461dc072 Initial revision
glantau
parents:
diff changeset
442 filename = "/tmp/test.mpg";
986e461dc072 Initial revision
glantau
parents:
diff changeset
443 } else {
986e461dc072 Initial revision
glantau
parents:
diff changeset
444 filename = argv[1];
986e461dc072 Initial revision
glantau
parents:
diff changeset
445 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
446
986e461dc072 Initial revision
glantau
parents:
diff changeset
447 // audio_decode_example("/tmp/test.sw", filename);
986e461dc072 Initial revision
glantau
parents:
diff changeset
448 video_decode_example("/tmp/test%d.pgm", filename);
986e461dc072 Initial revision
glantau
parents:
diff changeset
449
986e461dc072 Initial revision
glantau
parents:
diff changeset
450 return 0;
986e461dc072 Initial revision
glantau
parents:
diff changeset
451 }