annotate img.c @ 8:995bb04e02f1 libavformat

* Add code to allow the img reader to read files at the nominal frame rate. This (will) allow testing of ffserver in an automated way. The code is nasty in that it uses a global.......
author philipjsg
date Wed, 11 Dec 2002 03:18:47 +0000
parents 05318cf2e886
children 7e1ff5580f27
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
1 /*
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
2 * Image format
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
3 * Copyright (c) 2000, 2001, 2002 Fabrice Bellard.
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
4 *
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
5 * This library is free software; you can redistribute it and/or
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
6 * modify it under the terms of the GNU Lesser General Public
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
7 * License as published by the Free Software Foundation; either
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
8 * version 2 of the License, or (at your option) any later version.
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
9 *
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
10 * This library is distributed in the hope that it will be useful,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
13 * Lesser General Public License for more details.
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
14 *
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
15 * You should have received a copy of the GNU Lesser General Public
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
16 * License along with this library; if not, write to the Free Software
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
18 */
8
995bb04e02f1 * Add code to allow the img reader to read files at the nominal frame rate.
philipjsg
parents: 0
diff changeset
19 #include <unistd.h>
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
20 #include "avformat.h"
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
21
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
22 extern AVInputFormat pgm_iformat;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
23 extern AVOutputFormat pgm_oformat;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
24 extern AVInputFormat pgmyuv_iformat;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
25 extern AVOutputFormat pgmyuv_oformat;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
26 extern AVInputFormat ppm_iformat;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
27 extern AVOutputFormat ppm_oformat;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
28 extern AVInputFormat imgyuv_iformat;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
29 extern AVOutputFormat imgyuv_oformat;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
30 extern AVInputFormat pgmpipe_iformat;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
31 extern AVOutputFormat pgmpipe_oformat;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
32 extern AVInputFormat pgmyuvpipe_iformat;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
33 extern AVOutputFormat pgmyuvpipe_oformat;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
34 extern AVInputFormat ppmpipe_iformat;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
35 extern AVOutputFormat ppmpipe_oformat;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
36 extern AVOutputFormat yuv4mpegpipe_oformat;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
37
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
38 #define IMGFMT_YUV 1
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
39 #define IMGFMT_PGMYUV 2
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
40 #define IMGFMT_PGM 3
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
41 #define IMGFMT_PPM 4
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
42 #define IMGFMT_YUV4MPEG 5
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
43
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
44 #define Y4M_MAGIC "YUV4MPEG2"
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
45 #define Y4M_FRAME_MAGIC "FRAME"
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
46 #define Y4M_LINE_MAX 256
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
47
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
48 typedef struct {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
49 int width;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
50 int height;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
51 int img_number;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
52 int img_size;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
53 int img_fmt;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
54 int is_pipe;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
55 int header_written;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
56 char path[1024];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
57 } VideoData;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
58
8
995bb04e02f1 * Add code to allow the img reader to read files at the nominal frame rate.
philipjsg
parents: 0
diff changeset
59 int emulate_frame_rate;
995bb04e02f1 * Add code to allow the img reader to read files at the nominal frame rate.
philipjsg
parents: 0
diff changeset
60
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
61 static inline int pnm_space(int c)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
62 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
63 return (c==' ' || c=='\n' || c=='\r' || c=='\t');
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
64 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
65
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
66 static void pnm_get(ByteIOContext *f, char *str, int buf_size)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
67 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
68 char *s;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
69 int c;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
70
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
71 do {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
72 c=get_byte(f);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
73 if (c=='#') {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
74 do {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
75 c=get_byte(f);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
76 } while (c!='\n');
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
77 c=get_byte(f);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
78 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
79 } while (pnm_space(c));
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
80
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
81 s=str;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
82 do {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
83 if (url_feof(f))
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
84 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
85 if ((s - str) < buf_size - 1)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
86 *s++=c;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
87 c=get_byte(f);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
88 } while (!pnm_space(c));
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
89 *s = '\0';
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
90 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
91
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
92 static int pgm_read(VideoData *s, ByteIOContext *f, UINT8 *buf, int size, int is_yuv)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
93 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
94 int width, height, i;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
95 char buf1[32];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
96 UINT8 *picture[3];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
97
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
98 width = s->width;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
99 height = s->height;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
100
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
101 pnm_get(f, buf1, sizeof(buf1));
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
102 if (strcmp(buf1, "P5")) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
103 return -EIO;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
104 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
105 pnm_get(f, buf1, sizeof(buf1));
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
106 pnm_get(f, buf1, sizeof(buf1));
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
107 pnm_get(f, buf1, sizeof(buf1));
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
108
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
109 picture[0] = buf;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
110 picture[1] = buf + width * height;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
111 picture[2] = buf + width * height + (width * height / 4);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
112 get_buffer(f, picture[0], width * height);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
113
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
114 height>>=1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
115 width>>=1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
116 if (is_yuv) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
117 for(i=0;i<height;i++) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
118 get_buffer(f, picture[1] + i * width, width);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
119 get_buffer(f, picture[2] + i * width, width);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
120 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
121 } else {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
122 for(i=0;i<height;i++) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
123 memset(picture[1] + i * width, 128, width);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
124 memset(picture[2] + i * width, 128, width);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
125 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
126 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
127 return 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
128 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
129
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
130 static int ppm_read(VideoData *s, ByteIOContext *f, UINT8 *buf, int size)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
131 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
132 int width, height;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
133 char buf1[32];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
134 UINT8 *picture[3];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
135
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
136 width = s->width;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
137 height = s->height;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
138
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
139 pnm_get(f, buf1, sizeof(buf1));
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
140 if (strcmp(buf1, "P6")) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
141 return -EIO;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
142 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
143
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
144 pnm_get(f, buf1, sizeof(buf1));
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
145 pnm_get(f, buf1, sizeof(buf1));
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
146 pnm_get(f, buf1, sizeof(buf1));
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
147
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
148 picture[0] = buf;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
149 get_buffer(f, picture[0], width * height*3);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
150
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
151 return 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
152
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
153 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
154
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
155 static int yuv_read(VideoData *s, const char *filename, UINT8 *buf, int size1)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
156 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
157 ByteIOContext pb1, *pb = &pb1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
158 char fname[1024], *p;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
159 int size;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
160
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
161 size = s->width * s->height;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
162
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
163 strcpy(fname, filename);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
164 p = strrchr(fname, '.');
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
165 if (!p || p[1] != 'Y')
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
166 return -EIO;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
167
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
168 if (url_fopen(pb, fname, URL_RDONLY) < 0)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
169 return -EIO;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
170
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
171 get_buffer(pb, buf, size);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
172 url_fclose(pb);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
173
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
174 p[1] = 'U';
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
175 if (url_fopen(pb, fname, URL_RDONLY) < 0)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
176 return -EIO;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
177
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
178 get_buffer(pb, buf + size, size / 4);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
179 url_fclose(pb);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
180
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
181 p[1] = 'V';
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
182 if (url_fopen(pb, fname, URL_RDONLY) < 0)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
183 return -EIO;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
184
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
185 get_buffer(pb, buf + size + (size / 4), size / 4);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
186 url_fclose(pb);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
187 return 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
188 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
189
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
190 static int img_read_packet(AVFormatContext *s1, AVPacket *pkt)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
191 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
192 VideoData *s = s1->priv_data;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
193 char filename[1024];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
194 int ret;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
195 ByteIOContext f1, *f;
8
995bb04e02f1 * Add code to allow the img reader to read files at the nominal frame rate.
philipjsg
parents: 0
diff changeset
196 static INT64 first_frame;
995bb04e02f1 * Add code to allow the img reader to read files at the nominal frame rate.
philipjsg
parents: 0
diff changeset
197
995bb04e02f1 * Add code to allow the img reader to read files at the nominal frame rate.
philipjsg
parents: 0
diff changeset
198 if (emulate_frame_rate) {
995bb04e02f1 * Add code to allow the img reader to read files at the nominal frame rate.
philipjsg
parents: 0
diff changeset
199 if (!first_frame) {
995bb04e02f1 * Add code to allow the img reader to read files at the nominal frame rate.
philipjsg
parents: 0
diff changeset
200 first_frame = av_gettime();
995bb04e02f1 * Add code to allow the img reader to read files at the nominal frame rate.
philipjsg
parents: 0
diff changeset
201 } else {
995bb04e02f1 * Add code to allow the img reader to read files at the nominal frame rate.
philipjsg
parents: 0
diff changeset
202 INT64 pts;
995bb04e02f1 * Add code to allow the img reader to read files at the nominal frame rate.
philipjsg
parents: 0
diff changeset
203 INT64 nowus;
995bb04e02f1 * Add code to allow the img reader to read files at the nominal frame rate.
philipjsg
parents: 0
diff changeset
204
995bb04e02f1 * Add code to allow the img reader to read files at the nominal frame rate.
philipjsg
parents: 0
diff changeset
205 nowus = av_gettime() - first_frame;
995bb04e02f1 * Add code to allow the img reader to read files at the nominal frame rate.
philipjsg
parents: 0
diff changeset
206
995bb04e02f1 * Add code to allow the img reader to read files at the nominal frame rate.
philipjsg
parents: 0
diff changeset
207 pts = ((INT64)s->img_number * FRAME_RATE_BASE * 1000000) / (s1->streams[0]->codec.frame_rate);
995bb04e02f1 * Add code to allow the img reader to read files at the nominal frame rate.
philipjsg
parents: 0
diff changeset
208
995bb04e02f1 * Add code to allow the img reader to read files at the nominal frame rate.
philipjsg
parents: 0
diff changeset
209 if (pts > nowus)
995bb04e02f1 * Add code to allow the img reader to read files at the nominal frame rate.
philipjsg
parents: 0
diff changeset
210 usleep(pts - nowus);
995bb04e02f1 * Add code to allow the img reader to read files at the nominal frame rate.
philipjsg
parents: 0
diff changeset
211 }
995bb04e02f1 * Add code to allow the img reader to read files at the nominal frame rate.
philipjsg
parents: 0
diff changeset
212 }
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
213
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
214 /*
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
215 This if-statement destroys pipes - I do not see why it is necessary
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
216 if (get_frame_filename(filename, sizeof(filename),
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
217 s->path, s->img_number) < 0)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
218 return -EIO;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
219 */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
220 get_frame_filename(filename, sizeof(filename),
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
221 s->path, s->img_number);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
222 if (!s->is_pipe) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
223 f = &f1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
224 if (url_fopen(f, filename, URL_RDONLY) < 0)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
225 return -EIO;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
226 } else {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
227 f = &s1->pb;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
228 if (url_feof(f))
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
229 return -EIO;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
230 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
231
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
232 av_new_packet(pkt, s->img_size);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
233 pkt->stream_index = 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
234
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
235 switch(s->img_fmt) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
236 case IMGFMT_PGMYUV:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
237 ret = pgm_read(s, f, pkt->data, pkt->size, 1);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
238 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
239 case IMGFMT_PGM:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
240 ret = pgm_read(s, f, pkt->data, pkt->size, 0);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
241 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
242 case IMGFMT_YUV:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
243 ret = yuv_read(s, filename, pkt->data, pkt->size);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
244 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
245 case IMGFMT_PPM:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
246 ret = ppm_read(s, f, pkt->data, pkt->size);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
247 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
248 default:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
249 return -EIO;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
250 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
251
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
252 if (!s->is_pipe) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
253 url_fclose(f);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
254 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
255
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
256 if (ret < 0) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
257 av_free_packet(pkt);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
258 return -EIO; /* signal EOF */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
259 } else {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
260 pkt->pts = ((INT64)s->img_number * s1->pts_den * FRAME_RATE_BASE) / (s1->streams[0]->codec.frame_rate * s1->pts_num);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
261 s->img_number++;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
262 return 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
263 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
264 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
265
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
266 static int sizes[][2] = {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
267 { 640, 480 },
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
268 { 720, 480 },
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
269 { 720, 576 },
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
270 { 352, 288 },
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
271 { 352, 240 },
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
272 { 160, 128 },
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
273 { 512, 384 },
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
274 { 640, 352 },
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
275 { 640, 240 },
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
276 };
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
277
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
278 static int infer_size(int *width_ptr, int *height_ptr, int size)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
279 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
280 int i;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
281
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
282 for(i=0;i<sizeof(sizes)/sizeof(sizes[0]);i++) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
283 if ((sizes[i][0] * sizes[i][1]) == size) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
284 *width_ptr = sizes[i][0];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
285 *height_ptr = sizes[i][1];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
286 return 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
287 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
288 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
289 return -1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
290 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
291
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
292 static int img_read_header(AVFormatContext *s1, AVFormatParameters *ap)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
293 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
294 VideoData *s = s1->priv_data;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
295 int i, h;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
296 char buf[1024];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
297 char buf1[32];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
298 ByteIOContext pb1, *f = &pb1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
299 AVStream *st;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
300
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
301 st = av_new_stream(s1, 0);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
302 if (!st) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
303 av_free(s);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
304 return -ENOMEM;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
305 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
306
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
307 strcpy(s->path, s1->filename);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
308 s->img_number = 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
309
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
310 /* find format */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
311 if (s1->iformat->flags & AVFMT_NOFILE)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
312 s->is_pipe = 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
313 else
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
314 s->is_pipe = 1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
315
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
316 if (s1->iformat == &pgmyuvpipe_iformat ||
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
317 s1->iformat == &pgmyuv_iformat)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
318 s->img_fmt = IMGFMT_PGMYUV;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
319 else if (s1->iformat == &pgmpipe_iformat ||
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
320 s1->iformat == &pgm_iformat)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
321 s->img_fmt = IMGFMT_PGM;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
322 else if (s1->iformat == &imgyuv_iformat)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
323 s->img_fmt = IMGFMT_YUV;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
324 else if (s1->iformat == &ppmpipe_iformat ||
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
325 s1->iformat == &ppm_iformat)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
326 s->img_fmt = IMGFMT_PPM;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
327 else
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
328 goto fail;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
329
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
330 if (!s->is_pipe) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
331 /* try to find the first image */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
332 for(i=0;i<5;i++) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
333 if (get_frame_filename(buf, sizeof(buf), s->path, s->img_number) < 0)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
334 goto fail;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
335 if (url_fopen(f, buf, URL_RDONLY) >= 0)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
336 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
337 s->img_number++;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
338 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
339 if (i == 5)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
340 goto fail;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
341 } else {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
342 f = &s1->pb;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
343 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
344
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
345 /* find the image size */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
346 /* XXX: use generic file format guessing, as mpeg */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
347 switch(s->img_fmt) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
348 case IMGFMT_PGM:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
349 case IMGFMT_PGMYUV:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
350 case IMGFMT_PPM:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
351 pnm_get(f, buf1, sizeof(buf1));
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
352 pnm_get(f, buf1, sizeof(buf1));
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
353 s->width = atoi(buf1);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
354 pnm_get(f, buf1, sizeof(buf1));
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
355 h = atoi(buf1);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
356 if (s->img_fmt == IMGFMT_PGMYUV)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
357 h = (h * 2) / 3;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
358 s->height = h;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
359 if (s->width <= 0 ||
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
360 s->height <= 0 ||
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
361 (s->width % 2) != 0 ||
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
362 (s->height % 2) != 0) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
363 goto fail1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
364 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
365 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
366 case IMGFMT_YUV:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
367 /* infer size by using the file size. */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
368 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
369 int img_size;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
370 URLContext *h;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
371
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
372 /* XXX: hack hack */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
373 h = url_fileno(f);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
374 img_size = url_seek(h, 0, SEEK_END);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
375 if (infer_size(&s->width, &s->height, img_size) < 0) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
376 goto fail1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
377 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
378 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
379 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
380 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
381
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
382
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
383 if (!s->is_pipe) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
384 url_fclose(f);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
385 } else {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
386 url_fseek(f, 0, SEEK_SET);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
387 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
388
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
389
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
390 st->codec.codec_type = CODEC_TYPE_VIDEO;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
391 st->codec.codec_id = CODEC_ID_RAWVIDEO;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
392 st->codec.width = s->width;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
393 st->codec.height = s->height;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
394 if (s->img_fmt == IMGFMT_PPM) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
395 st->codec.pix_fmt = PIX_FMT_RGB24;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
396 s->img_size = (s->width * s->height * 3);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
397 } else {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
398 st->codec.pix_fmt = PIX_FMT_YUV420P;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
399 s->img_size = (s->width * s->height * 3) / 2;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
400 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
401 if (!ap || !ap->frame_rate)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
402 st->codec.frame_rate = 25 * FRAME_RATE_BASE;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
403 else
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
404 st->codec.frame_rate = ap->frame_rate;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
405
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
406 return 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
407 fail1:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
408 if (!s->is_pipe)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
409 url_fclose(f);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
410 fail:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
411 av_free(s);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
412 return -EIO;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
413 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
414
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
415 static int img_read_close(AVFormatContext *s1)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
416 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
417 return 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
418 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
419
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
420 /******************************************************/
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
421 /* image output */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
422
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
423 static int pgm_save(AVPicture *picture, int width, int height, ByteIOContext *pb, int is_yuv)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
424 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
425 int i, h;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
426 char buf[100];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
427 UINT8 *ptr, *ptr1, *ptr2;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
428
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
429 h = height;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
430 if (is_yuv)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
431 h = (height * 3) / 2;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
432 snprintf(buf, sizeof(buf),
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
433 "P5\n%d %d\n%d\n",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
434 width, h, 255);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
435 put_buffer(pb, buf, strlen(buf));
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
436
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
437 ptr = picture->data[0];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
438 for(i=0;i<height;i++) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
439 put_buffer(pb, ptr, width);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
440 ptr += picture->linesize[0];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
441 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
442
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
443 if (is_yuv) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
444 height >>= 1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
445 width >>= 1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
446 ptr1 = picture->data[1];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
447 ptr2 = picture->data[2];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
448 for(i=0;i<height;i++) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
449 put_buffer(pb, ptr1, width);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
450 put_buffer(pb, ptr2, width);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
451 ptr1 += picture->linesize[1];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
452 ptr2 += picture->linesize[2];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
453 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
454 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
455 put_flush_packet(pb);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
456 return 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
457 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
458
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
459 static int ppm_save(AVPicture *picture, int width, int height, ByteIOContext *pb)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
460 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
461 int i;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
462 char buf[100];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
463 UINT8 *ptr;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
464
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
465 snprintf(buf, sizeof(buf),
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
466 "P6\n%d %d\n%d\n",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
467 width, height, 255);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
468 put_buffer(pb, buf, strlen(buf));
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
469
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
470 ptr = picture->data[0];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
471 for(i=0;i<height;i++) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
472 put_buffer(pb, ptr, width * 3);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
473 ptr += picture->linesize[0];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
474 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
475
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
476 put_flush_packet(pb);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
477 return 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
478 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
479
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
480 static int yuv_save(AVPicture *picture, int width, int height, const char *filename)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
481 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
482 ByteIOContext pb1, *pb = &pb1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
483 char fname[1024], *p;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
484 int i, j;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
485 UINT8 *ptr;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
486 static char *ext = "YUV";
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
487
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
488 strcpy(fname, filename);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
489 p = strrchr(fname, '.');
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
490 if (!p || p[1] != 'Y')
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
491 return -EIO;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
492
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
493 for(i=0;i<3;i++) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
494 if (i == 1) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
495 width >>= 1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
496 height >>= 1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
497 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
498
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
499 p[1] = ext[i];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
500 if (url_fopen(pb, fname, URL_WRONLY) < 0)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
501 return -EIO;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
502
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
503 ptr = picture->data[i];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
504 for(j=0;j<height;j++) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
505 put_buffer(pb, ptr, width);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
506 ptr += picture->linesize[i];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
507 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
508 put_flush_packet(pb);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
509 url_fclose(pb);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
510 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
511 return 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
512 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
513
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
514 static int yuv4mpeg_save(AVPicture *picture, int width, int height, ByteIOContext *pb, int need_stream_header,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
515 int is_yuv, int raten, int rated, int aspectn, int aspectd)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
516 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
517 int i, n, m;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
518 char buf[Y4M_LINE_MAX+1], buf1[20];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
519 UINT8 *ptr, *ptr1, *ptr2;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
520
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
521 /* construct stream header, if this is the first frame */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
522 if(need_stream_header) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
523 n = snprintf(buf, sizeof(buf), "%s W%d H%d F%d:%d I%s A%d:%d\n",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
524 Y4M_MAGIC,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
525 width,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
526 height,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
527 raten, rated,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
528 "p", /* ffmpeg seems to only output progressive video */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
529 aspectn, aspectd);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
530 if (n < 0) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
531 fprintf(stderr, "Error. YUV4MPEG stream header write failed.\n");
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
532 } else {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
533 fprintf(stderr, "YUV4MPEG stream header written. FPS is %d\n", raten);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
534 put_buffer(pb, buf, strlen(buf));
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
535 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
536 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
537
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
538 /* construct frame header */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
539 m = snprintf(buf1, sizeof(buf1), "%s \n", Y4M_FRAME_MAGIC);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
540 if (m < 0) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
541 fprintf(stderr, "Error. YUV4MPEG frame header write failed.\n");
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
542 } else {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
543 /* fprintf(stderr, "YUV4MPEG frame header written.\n"); */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
544 put_buffer(pb, buf1, strlen(buf1));
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
545 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
546
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
547 ptr = picture->data[0];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
548 for(i=0;i<height;i++) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
549 put_buffer(pb, ptr, width);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
550 ptr += picture->linesize[0];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
551 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
552
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
553 if (is_yuv) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
554 height >>= 1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
555 width >>= 1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
556 ptr1 = picture->data[1];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
557 ptr2 = picture->data[2];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
558 for(i=0;i<height;i++) { /* Cb */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
559 put_buffer(pb, ptr1, width);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
560 ptr1 += picture->linesize[1];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
561 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
562 for(i=0;i<height;i++) { /* Cr */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
563 put_buffer(pb, ptr2, width);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
564 ptr2 += picture->linesize[2];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
565 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
566 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
567 put_flush_packet(pb);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
568 return 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
569 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
570
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
571 static int img_write_header(AVFormatContext *s)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
572 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
573 VideoData *img = s->priv_data;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
574
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
575 img->img_number = 1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
576 strcpy(img->path, s->filename);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
577
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
578 /* find format */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
579 if (s->oformat->flags & AVFMT_NOFILE)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
580 img->is_pipe = 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
581 else
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
582 img->is_pipe = 1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
583
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
584 if (s->oformat == &pgmyuvpipe_oformat ||
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
585 s->oformat == &pgmyuv_oformat) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
586 img->img_fmt = IMGFMT_PGMYUV;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
587 } else if (s->oformat == &pgmpipe_oformat ||
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
588 s->oformat == &pgm_oformat) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
589 img->img_fmt = IMGFMT_PGM;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
590 } else if (s->oformat == &imgyuv_oformat) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
591 img->img_fmt = IMGFMT_YUV;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
592 } else if (s->oformat == &ppmpipe_oformat ||
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
593 s->oformat == &ppm_oformat) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
594 img->img_fmt = IMGFMT_PPM;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
595 } else if (s->oformat == &yuv4mpegpipe_oformat) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
596 img->img_fmt = IMGFMT_YUV4MPEG;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
597 img->header_written = 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
598 } else {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
599 goto fail;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
600 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
601 return 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
602 fail:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
603 av_free(img);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
604 return -EIO;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
605 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
606
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
607 static int img_write_packet(AVFormatContext *s, int stream_index,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
608 UINT8 *buf, int size, int force_pts)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
609 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
610 VideoData *img = s->priv_data;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
611 AVStream *st = s->streams[stream_index];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
612 ByteIOContext pb1, *pb;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
613 AVPicture picture;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
614 int width, height, need_stream_header, ret, size1, raten, rated, aspectn, aspectd, fps, fps1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
615 char filename[1024];
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
616
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
617 width = st->codec.width;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
618 height = st->codec.height;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
619
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
620 if (img->img_number == 1) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
621 need_stream_header = 1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
622 } else {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
623 need_stream_header = 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
624 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
625
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
626 fps = st->codec.frame_rate;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
627 fps1 = (((float)fps / FRAME_RATE_BASE) * 1000);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
628
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
629 /* Sorry about this messy code, but mpeg2enc is very picky about
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
630 * the framerates it accepts. */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
631 switch(fps1) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
632 case 23976:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
633 raten = 24000; /* turn the framerate into a ratio */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
634 rated = 1001;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
635 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
636 case 29970:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
637 raten = 30000;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
638 rated = 1001;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
639 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
640 case 25000:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
641 raten = 25;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
642 rated = 1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
643 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
644 case 30000:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
645 raten = 30;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
646 rated = 1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
647 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
648 case 24000:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
649 raten = 24;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
650 rated = 1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
651 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
652 case 50000:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
653 raten = 50;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
654 rated = 1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
655 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
656 case 59940:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
657 raten = 60000;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
658 rated = 1001;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
659 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
660 case 60000:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
661 raten = 60;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
662 rated = 1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
663 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
664 default:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
665 raten = fps1; /* this setting should work, but often doesn't */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
666 rated = 1000;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
667 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
668 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
669
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
670 aspectn = 1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
671 aspectd = 1; /* ffmpeg always uses a 1:1 aspect ratio */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
672
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
673 switch(st->codec.pix_fmt) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
674 case PIX_FMT_YUV420P:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
675 size1 = (width * height * 3) / 2;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
676 if (size != size1)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
677 return -EIO;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
678
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
679 picture.data[0] = buf;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
680 picture.data[1] = picture.data[0] + width * height;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
681 picture.data[2] = picture.data[1] + (width * height) / 4;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
682 picture.linesize[0] = width;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
683 picture.linesize[1] = width >> 1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
684 picture.linesize[2] = width >> 1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
685 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
686 case PIX_FMT_RGB24:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
687 size1 = (width * height * 3);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
688 if (size != size1)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
689 return -EIO;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
690 picture.data[0] = buf;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
691 picture.linesize[0] = width * 3;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
692 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
693 default:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
694 return -EIO;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
695 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
696
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
697 /*
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
698 This if-statement destroys pipes - I do not see why it is necessary
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
699 if (get_frame_filename(filename, sizeof(filename),
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
700 img->path, img->img_number) < 0)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
701 return -EIO;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
702 */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
703 get_frame_filename(filename, sizeof(filename),
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
704 img->path, img->img_number);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
705 if (!img->is_pipe) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
706 pb = &pb1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
707 if (url_fopen(pb, filename, URL_WRONLY) < 0)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
708 return -EIO;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
709 } else {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
710 pb = &s->pb;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
711 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
712 switch(img->img_fmt) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
713 case IMGFMT_PGMYUV:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
714 ret = pgm_save(&picture, width, height, pb, 1);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
715 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
716 case IMGFMT_PGM:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
717 ret = pgm_save(&picture, width, height, pb, 0);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
718 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
719 case IMGFMT_YUV:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
720 ret = yuv_save(&picture, width, height, filename);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
721 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
722 case IMGFMT_PPM:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
723 ret = ppm_save(&picture, width, height, pb);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
724 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
725 case IMGFMT_YUV4MPEG:
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
726 ret = yuv4mpeg_save(&picture, width, height, pb,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
727 need_stream_header, 1, raten, rated, aspectn, aspectd);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
728 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
729 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
730 if (!img->is_pipe) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
731 url_fclose(pb);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
732 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
733
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
734 img->img_number++;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
735 return 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
736 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
737
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
738 static int img_write_trailer(AVFormatContext *s)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
739 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
740 return 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
741 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
742
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
743 static AVInputFormat pgm_iformat = {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
744 "pgm",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
745 "pgm image format",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
746 sizeof(VideoData),
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
747 NULL,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
748 img_read_header,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
749 img_read_packet,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
750 img_read_close,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
751 NULL,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
752 AVFMT_NOFILE | AVFMT_NEEDNUMBER,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
753 .extensions = "pgm",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
754 };
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
755
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
756 static AVOutputFormat pgm_oformat = {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
757 "pgm",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
758 "pgm image format",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
759 "",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
760 "pgm",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
761 sizeof(VideoData),
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
762 CODEC_ID_NONE,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
763 CODEC_ID_RAWVIDEO,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
764 img_write_header,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
765 img_write_packet,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
766 img_write_trailer,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
767 AVFMT_NOFILE | AVFMT_NEEDNUMBER,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
768 };
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
769
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
770 static AVInputFormat pgmyuv_iformat = {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
771 "pgmyuv",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
772 "pgm with YUV content image format",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
773 sizeof(VideoData),
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
774 NULL, /* no probe */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
775 img_read_header,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
776 img_read_packet,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
777 img_read_close,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
778 NULL,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
779 AVFMT_NOFILE | AVFMT_NEEDNUMBER,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
780 };
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
781
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
782 static AVOutputFormat pgmyuv_oformat = {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
783 "pgmyuv",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
784 "pgm with YUV content image format",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
785 "",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
786 "pgm",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
787 sizeof(VideoData),
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
788 CODEC_ID_NONE,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
789 CODEC_ID_RAWVIDEO,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
790 img_write_header,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
791 img_write_packet,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
792 img_write_trailer,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
793 AVFMT_NOFILE | AVFMT_NEEDNUMBER,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
794 };
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
795
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
796 static AVInputFormat ppm_iformat = {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
797 "ppm",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
798 "ppm image format",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
799 sizeof(VideoData),
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
800 NULL,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
801 img_read_header,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
802 img_read_packet,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
803 img_read_close,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
804 NULL,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
805 AVFMT_NOFILE | AVFMT_NEEDNUMBER | AVFMT_RGB24,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
806 .extensions = "ppm",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
807 };
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
808
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
809 static AVOutputFormat ppm_oformat = {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
810 "ppm",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
811 "ppm image format",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
812 "",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
813 "ppm",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
814 sizeof(VideoData),
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
815 CODEC_ID_NONE,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
816 CODEC_ID_RAWVIDEO,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
817 img_write_header,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
818 img_write_packet,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
819 img_write_trailer,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
820 AVFMT_NOFILE | AVFMT_NEEDNUMBER | AVFMT_RGB24,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
821 };
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
822
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
823 static AVInputFormat imgyuv_iformat = {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
824 ".Y.U.V",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
825 ".Y.U.V format",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
826 sizeof(VideoData),
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
827 NULL,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
828 img_read_header,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
829 img_read_packet,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
830 img_read_close,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
831 NULL,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
832 AVFMT_NOFILE | AVFMT_NEEDNUMBER,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
833 .extensions = "Y",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
834 };
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
835
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
836 static AVOutputFormat imgyuv_oformat = {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
837 ".Y.U.V",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
838 ".Y.U.V format",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
839 "",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
840 "Y",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
841 sizeof(VideoData),
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
842 CODEC_ID_NONE,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
843 CODEC_ID_RAWVIDEO,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
844 img_write_header,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
845 img_write_packet,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
846 img_write_trailer,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
847 AVFMT_NOFILE | AVFMT_NEEDNUMBER,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
848 };
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
849
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
850 static AVInputFormat pgmpipe_iformat = {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
851 "pgmpipe",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
852 "PGM pipe format",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
853 sizeof(VideoData),
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
854 NULL, /* no probe */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
855 img_read_header,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
856 img_read_packet,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
857 img_read_close,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
858 NULL,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
859 };
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
860
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
861 static AVOutputFormat pgmpipe_oformat = {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
862 "pgmpipe",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
863 "PGM pipe format",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
864 "",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
865 "pgm",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
866 sizeof(VideoData),
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
867 CODEC_ID_NONE,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
868 CODEC_ID_RAWVIDEO,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
869 img_write_header,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
870 img_write_packet,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
871 img_write_trailer,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
872 };
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
873
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
874 static AVInputFormat pgmyuvpipe_iformat = {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
875 "pgmyuvpipe",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
876 "PGM YUV pipe format",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
877 sizeof(VideoData),
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
878 NULL, /* no probe */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
879 img_read_header,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
880 img_read_packet,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
881 img_read_close,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
882 NULL,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
883 };
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
884
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
885 static AVOutputFormat pgmyuvpipe_oformat = {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
886 "pgmyuvpipe",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
887 "PGM YUV pipe format",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
888 "",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
889 "pgm",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
890 sizeof(VideoData),
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
891 CODEC_ID_NONE,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
892 CODEC_ID_RAWVIDEO,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
893 img_write_header,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
894 img_write_packet,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
895 img_write_trailer,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
896 };
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
897
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
898 static AVInputFormat ppmpipe_iformat = {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
899 "ppmpipe",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
900 "PPM pipe format",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
901 sizeof(VideoData),
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
902 NULL, /* no probe */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
903 img_read_header,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
904 img_read_packet,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
905 img_read_close,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
906 NULL,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
907 .flags = AVFMT_RGB24,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
908 };
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
909
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
910 static AVOutputFormat ppmpipe_oformat = {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
911 "ppmpipe",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
912 "PPM pipe format",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
913 "",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
914 "ppm",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
915 sizeof(VideoData),
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
916 CODEC_ID_NONE,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
917 CODEC_ID_RAWVIDEO,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
918 img_write_header,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
919 img_write_packet,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
920 img_write_trailer,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
921 .flags = AVFMT_RGB24,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
922 };
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
923
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
924
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
925 static AVOutputFormat yuv4mpegpipe_oformat = {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
926 "yuv4mpegpipe",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
927 "YUV4MPEG pipe format",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
928 "",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
929 "yuv4mpeg",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
930 sizeof(VideoData),
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
931 CODEC_ID_NONE,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
932 CODEC_ID_RAWVIDEO,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
933 img_write_header,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
934 img_write_packet,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
935 img_write_trailer,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
936 };
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
937
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
938
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
939 int img_init(void)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
940 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
941 av_register_input_format(&pgm_iformat);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
942 av_register_output_format(&pgm_oformat);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
943
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
944 av_register_input_format(&pgmyuv_iformat);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
945 av_register_output_format(&pgmyuv_oformat);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
946
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
947 av_register_input_format(&ppm_iformat);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
948 av_register_output_format(&ppm_oformat);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
949
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
950 av_register_input_format(&imgyuv_iformat);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
951 av_register_output_format(&imgyuv_oformat);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
952
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
953 av_register_input_format(&pgmpipe_iformat);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
954 av_register_output_format(&pgmpipe_oformat);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
955
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
956 av_register_input_format(&pgmyuvpipe_iformat);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
957 av_register_output_format(&pgmyuvpipe_oformat);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
958
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
959 av_register_input_format(&ppmpipe_iformat);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
960 av_register_output_format(&ppmpipe_oformat);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
961
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
962 av_register_output_format(&yuv4mpegpipe_oformat);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
963
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
964 return 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
965 }