summaryrefslogtreecommitdiff
path: root/src/libffmpeg/libavcodec/mjpeg.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libffmpeg/libavcodec/mjpeg.c')
-rw-r--r--src/libffmpeg/libavcodec/mjpeg.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/libffmpeg/libavcodec/mjpeg.c b/src/libffmpeg/libavcodec/mjpeg.c
index 1a948aa56..30029d40c 100644
--- a/src/libffmpeg/libavcodec/mjpeg.c
+++ b/src/libffmpeg/libavcodec/mjpeg.c
@@ -378,7 +378,7 @@ static void jpeg_put_comments(MpegEncContext *s)
/* JFIF header */
put_marker(p, APP0);
put_bits(p, 16, 16);
- put_string(p, "JFIF"); /* this puts the trailing zero-byte too */
+ put_string(p, "JFIF", 1); /* this puts the trailing zero-byte too */
put_bits(p, 16, 0x0201); /* v 1.02 */
put_bits(p, 8, 0); /* units type: 0 - aspect ratio */
put_bits(p, 16, s->avctx->sample_aspect_ratio.num);
@@ -393,7 +393,7 @@ static void jpeg_put_comments(MpegEncContext *s)
flush_put_bits(p);
ptr = pbBufPtr(p);
put_bits(p, 16, 0); /* patched later */
- put_string(p, LIBAVCODEC_IDENT);
+ put_string(p, LIBAVCODEC_IDENT, 1);
size = strlen(LIBAVCODEC_IDENT)+3;
ptr[0] = size >> 8;
ptr[1] = size;
@@ -477,7 +477,7 @@ void mjpeg_picture_header(MpegEncContext *s)
static void escape_FF(MpegEncContext *s, int start)
{
- int size= get_bit_count(&s->pb) - start*8;
+ int size= put_bits_count(&s->pb) - start*8;
int i, ff_count;
uint8_t *buf= s->pb.buf + start;
int align= (-(size_t)(buf))&3;
@@ -531,11 +531,16 @@ static void escape_FF(MpegEncContext *s, int start)
}
}
+void ff_mjpeg_stuffing(PutBitContext * pbc)
+{
+ int length;
+ length= (-put_bits_count(pbc))&7;
+ if(length) put_bits(pbc, length, (1<<length)-1);
+}
+
void mjpeg_picture_trailer(MpegEncContext *s)
{
- int pad= (-get_bit_count(&s->pb))&7;
-
- put_bits(&s->pb, pad,0xFF>>(8-pad));
+ ff_mjpeg_stuffing(&s->pb);
flush_put_bits(&s->pb);
assert((s->header_bits&7)==0);
@@ -651,7 +656,7 @@ static int encode_picture_lossless(AVCodecContext *avctx, unsigned char *buf, in
mjpeg_picture_header(s);
- s->header_bits= get_bit_count(&s->pb);
+ s->header_bits= put_bits_count(&s->pb);
if(avctx->pix_fmt == PIX_FMT_RGBA32){
int x, y, i;
@@ -770,7 +775,7 @@ static int encode_picture_lossless(AVCodecContext *avctx, unsigned char *buf, in
flush_put_bits(&s->pb);
return pbBufPtr(&s->pb) - s->pb.buf;
-// return (get_bit_count(&f->pb)+7)/8;
+// return (put_bits_count(&f->pb)+7)/8;
}
#endif //CONFIG_ENCODERS