Mercurial > libavcodec.hg
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 */ |