comparison mjpeg.c @ 229:f418b5c5ff67 libavcodec

PATCH by Rik Snel <rsnel@cube.dyndns.org> this patch enhances the jpeg header writer. It can be asked to omit quantisation and huffman tables and it can write different horizontal and vertical sampling factors. (the last thing is useless for libavcodec itself (because libavcodec only handles YUV420P at ecoder level), but the values are initialized so that operation of libavcodec is not impaired)
author arpi_esp
date Sat, 09 Feb 2002 01:23:41 +0000
parents 5784987c3940
children 5fc0c3af3fe4
comparison
equal deleted inserted replaced
228:3c2bad70a196 229:f418b5c5ff67
257 257
258 void mjpeg_picture_header(MpegEncContext *s) 258 void mjpeg_picture_header(MpegEncContext *s)
259 { 259 {
260 put_marker(&s->pb, SOI); 260 put_marker(&s->pb, SOI);
261 261
262 jpeg_table_header(s); 262 if (s->mjpeg_write_tables) jpeg_table_header(s);
263 263
264 put_marker(&s->pb, SOF0); 264 put_marker(&s->pb, SOF0);
265 265
266 put_bits(&s->pb, 16, 17); 266 put_bits(&s->pb, 16, 17);
267 put_bits(&s->pb, 8, 8); /* 8 bits/component */ 267 put_bits(&s->pb, 8, 8); /* 8 bits/component */
269 put_bits(&s->pb, 16, s->width); 269 put_bits(&s->pb, 16, s->width);
270 put_bits(&s->pb, 8, 3); /* 3 components */ 270 put_bits(&s->pb, 8, 3); /* 3 components */
271 271
272 /* Y component */ 272 /* Y component */
273 put_bits(&s->pb, 8, 1); /* component number */ 273 put_bits(&s->pb, 8, 1); /* component number */
274 put_bits(&s->pb, 4, 2); /* H factor */ 274 put_bits(&s->pb, 4, s->mjpeg_hsample[0]); /* H factor */
275 put_bits(&s->pb, 4, 2); /* V factor */ 275 put_bits(&s->pb, 4, s->mjpeg_vsample[0]); /* V factor */
276 put_bits(&s->pb, 8, 0); /* select matrix */ 276 put_bits(&s->pb, 8, 0); /* select matrix */
277 277
278 /* Cb component */ 278 /* Cb component */
279 put_bits(&s->pb, 8, 2); /* component number */ 279 put_bits(&s->pb, 8, 2); /* component number */
280 put_bits(&s->pb, 4, 1); /* H factor */ 280 put_bits(&s->pb, 4, s->mjpeg_hsample[1]); /* H factor */
281 put_bits(&s->pb, 4, 1); /* V factor */ 281 put_bits(&s->pb, 4, s->mjpeg_vsample[1]); /* V factor */
282 put_bits(&s->pb, 8, 0); /* select matrix */ 282 put_bits(&s->pb, 8, 0); /* select matrix */
283 283
284 /* Cr component */ 284 /* Cr component */
285 put_bits(&s->pb, 8, 3); /* component number */ 285 put_bits(&s->pb, 8, 3); /* component number */
286 put_bits(&s->pb, 4, 1); /* H factor */ 286 put_bits(&s->pb, 4, s->mjpeg_hsample[2]); /* H factor */
287 put_bits(&s->pb, 4, 1); /* V factor */ 287 put_bits(&s->pb, 4, s->mjpeg_vsample[2]); /* V factor */
288 put_bits(&s->pb, 8, 0); /* select matrix */ 288 put_bits(&s->pb, 8, 0); /* select matrix */
289 289
290 /* scan header */ 290 /* scan header */
291 put_marker(&s->pb, SOS); 291 put_marker(&s->pb, SOS);
292 put_bits(&s->pb, 16, 12); /* length */ 292 put_bits(&s->pb, 16, 12); /* length */