| OLD | NEW |
| 1 Index: patched-ffmpeg-mt/libavcodec/mpeg4video.h | 1 Only in unpatched_ffmpeg-mt: ffmpeg-mt |
| 2 =================================================================== | 2 diff -rpu unpatched_ffmpeg-mt/libavcodec/Makefile ffmpeg-mt/libavcodec/Makefile |
| 3 --- patched-ffmpeg-mt/libavcodec/mpeg4video.h» (revision 39691) | 3 --- unpatched_ffmpeg-mt/libavcodec/Makefile» 2010-03-11 17:46:30 -0800 |
| 4 +++ patched-ffmpeg-mt/libavcodec/mpeg4video.h» (working copy) | 4 +++ ffmpeg-mt/libavcodec/Makefile» 2010-03-11 19:12:02 -0800 |
| 5 @@ -86,6 +86,9 @@ | 5 @@ -564,6 +564,14 @@ OBJS-$(CONFIG_VP3_PARSER) + |
| 6 OBJS-$(CONFIG_AAC_ADTSTOASC_BSF) += aac_adtstoasc_bsf.o |
| 7 OBJS-$(CONFIG_DUMP_EXTRADATA_BSF) += dump_extradata_bsf.o |
| 8 OBJS-$(CONFIG_H264_MP4TOANNEXB_BSF) += h264_mp4toannexb_bsf.o |
| 9 +OBJS-$(CONFIG_MPEG4VIDEO_ES_BSF) += mpeg4video_es_bsf.o \ |
| 10 + mpeg4videoenc.o ituh263enc.o \ |
| 11 + mpegvideo_enc.o motion_est.o \ |
| 12 + ratecontrol.o mpeg12data.o \ |
| 13 + aandcttab.o jfdctfst.o \ |
| 14 + jfdctint.o faandct.o \ |
| 15 + mpeg4video_parser.o mpegvideo.o \ |
| 16 + error_resilience.o |
| 17 OBJS-$(CONFIG_IMX_DUMP_HEADER_BSF) += imx_dump_header_bsf.o |
| 18 OBJS-$(CONFIG_MJPEGA_DUMP_HEADER_BSF) += mjpega_dump_header_bsf.o |
| 19 OBJS-$(CONFIG_MOV2TEXTSUB_BSF) += movsub_bsf.o |
| 20 Only in ffmpeg-mt/libavcodec: Makefile~ |
| 21 diff -rpu unpatched_ffmpeg-mt/libavcodec/allcodecs.c ffmpeg-mt/libavcodec/allcod
ecs.c |
| 22 --- unpatched_ffmpeg-mt/libavcodec/allcodecs.c» 2010-03-11 17:46:29 -0800 |
| 23 +++ ffmpeg-mt/libavcodec/allcodecs.c» 2010-03-11 19:12:02 -0800 |
| 24 @@ -384,6 +384,7 @@ void avcodec_register_all(void) |
| 25 REGISTER_BSF (AAC_ADTSTOASC, aac_adtstoasc); |
| 26 REGISTER_BSF (DUMP_EXTRADATA, dump_extradata); |
| 27 REGISTER_BSF (H264_MP4TOANNEXB, h264_mp4toannexb); |
| 28 + REGISTER_BSF (MPEG4VIDEO_ES, mpeg4video_es); |
| 29 REGISTER_BSF (IMX_DUMP_HEADER, imx_dump_header); |
| 30 REGISTER_BSF (MJPEGA_DUMP_HEADER, mjpega_dump_header); |
| 31 REGISTER_BSF (MP3_HEADER_COMPRESS, mp3_header_compress); |
| 32 Only in ffmpeg-mt/libavcodec: allcodecs.c~ |
| 33 diff -rpu unpatched_ffmpeg-mt/libavcodec/mpeg4video.h ffmpeg-mt/libavcodec/mpeg4
video.h |
| 34 --- unpatched_ffmpeg-mt/libavcodec/mpeg4video.h»2010-03-11 17:46:30 -0800 |
| 35 +++ ffmpeg-mt/libavcodec/mpeg4video.h» 2010-03-11 19:12:02 -0800 |
| 36 @@ -91,6 +91,9 @@ void mpeg4_encode_mb(MpegEncContext *s, |
| 6 void mpeg4_pred_ac(MpegEncContext * s, DCTELEM *block, int n, | 37 void mpeg4_pred_ac(MpegEncContext * s, DCTELEM *block, int n, |
| 7 int dir); | 38 int dir); |
| 8 void ff_set_mpeg4_time(MpegEncContext * s); | 39 void ff_set_mpeg4_time(MpegEncContext * s); |
| 9 +void mpeg4_encode_gop_header(MpegEncContext * s); | 40 +void mpeg4_encode_gop_header(MpegEncContext * s); |
| 10 +void mpeg4_encode_visual_object_header(MpegEncContext * s); | 41 +void mpeg4_encode_visual_object_header(MpegEncContext * s); |
| 11 +void mpeg4_encode_vol_header(MpegEncContext * s, int vo_number, int vol_number)
; | 42 +void mpeg4_encode_vol_header(MpegEncContext * s, int vo_number, int vol_number)
; |
| 12 void mpeg4_encode_picture_header(MpegEncContext *s, int picture_number); | 43 void mpeg4_encode_picture_header(MpegEncContext *s, int picture_number); |
| 13 | 44 |
| 14 int ff_mpeg4_decode_picture_header(MpegEncContext * s, GetBitContext *gb); | 45 int ff_mpeg4_decode_picture_header(MpegEncContext * s, GetBitContext *gb); |
| 15 Index: patched-ffmpeg-mt/libavcodec/mpeg4videoenc.c | 46 Only in ffmpeg-mt/libavcodec: mpeg4video.h~ |
| 16 =================================================================== | 47 Only in ffmpeg-mt/libavcodec: mpeg4video_es_bsf.c |
| 17 --- patched-ffmpeg-mt/libavcodec/mpeg4videoenc.c» (revision 39691) | 48 diff -rpu unpatched_ffmpeg-mt/libavcodec/mpeg4videoenc.c ffmpeg-mt/libavcodec/mp
eg4videoenc.c |
| 18 +++ patched-ffmpeg-mt/libavcodec/mpeg4videoenc.c» (working copy) | 49 --- unpatched_ffmpeg-mt/libavcodec/mpeg4videoenc.c» 2010-03-11 17:46:30 -080
0 |
| 19 @@ -872,7 +872,7 @@ | 50 +++ ffmpeg-mt/libavcodec/mpeg4videoenc.c» 2010-03-11 19:12:02 -0800 |
| 51 @@ -872,7 +872,7 @@ void ff_set_mpeg4_time(MpegEncContext * |
| 20 } | 52 } |
| 21 } | 53 } |
| 22 | 54 |
| 23 -static void mpeg4_encode_gop_header(MpegEncContext * s){ | 55 -static void mpeg4_encode_gop_header(MpegEncContext * s){ |
| 24 +void mpeg4_encode_gop_header(MpegEncContext * s){ | 56 +void mpeg4_encode_gop_header(MpegEncContext * s){ |
| 25 int hours, minutes, seconds; | 57 int hours, minutes, seconds; |
| 26 int64_t time; | 58 int64_t time; |
| 27 | 59 |
| 28 @@ -902,7 +902,7 @@ | 60 @@ -902,7 +902,7 @@ static void mpeg4_encode_gop_header(Mpeg |
| 29 ff_mpeg4_stuffing(&s->pb); | 61 ff_mpeg4_stuffing(&s->pb); |
| 30 } | 62 } |
| 31 | 63 |
| 32 -static void mpeg4_encode_visual_object_header(MpegEncContext * s){ | 64 -static void mpeg4_encode_visual_object_header(MpegEncContext * s){ |
| 33 +void mpeg4_encode_visual_object_header(MpegEncContext * s){ | 65 +void mpeg4_encode_visual_object_header(MpegEncContext * s){ |
| 34 int profile_and_level_indication; | 66 int profile_and_level_indication; |
| 35 int vo_ver_id; | 67 int vo_ver_id; |
| 36 | 68 |
| 37 @@ -947,7 +947,7 @@ | 69 @@ -947,7 +947,7 @@ static void mpeg4_encode_visual_object_h |
| 38 ff_mpeg4_stuffing(&s->pb); | 70 ff_mpeg4_stuffing(&s->pb); |
| 39 } | 71 } |
| 40 | 72 |
| 41 -static void mpeg4_encode_vol_header(MpegEncContext * s, int vo_number, int vol_
number) | 73 -static void mpeg4_encode_vol_header(MpegEncContext * s, int vo_number, int vol_
number) |
| 42 +void mpeg4_encode_vol_header(MpegEncContext * s, int vo_number, int vol_number) | 74 +void mpeg4_encode_vol_header(MpegEncContext * s, int vo_number, int vol_number) |
| 43 { | 75 { |
| 44 int vo_ver_id; | 76 int vo_ver_id; |
| 45 | 77 |
| 46 Index: patched-ffmpeg-mt/libavcodec/allcodecs.c | 78 diff -rpu unpatched_ffmpeg-mt/libavformat/mov.c ffmpeg-mt/libavformat/mov.c |
| 47 =================================================================== | 79 --- unpatched_ffmpeg-mt/libavformat/mov.c» 2010-03-11 17:46:31 -0800 |
| 48 --- patched-ffmpeg-mt/libavcodec/allcodecs.c» (revision 39691) | 80 +++ ffmpeg-mt/libavformat/mov.c»2010-03-11 19:08:40 -0800 |
| 49 +++ patched-ffmpeg-mt/libavcodec/allcodecs.c» (working copy) | 81 @@ -312,6 +312,8 @@ static int mov_read_dref(MOVContext *c, |
| 50 @@ -377,6 +377,7 @@ | 82 MOVDref *dref = &sc->drefs[i]; |
| 51 REGISTER_BSF (AAC_ADTSTOASC, aac_adtstoasc); | 83 uint32_t size = get_be32(pb); |
| 52 REGISTER_BSF (DUMP_EXTRADATA, dump_extradata); | 84 int64_t next = url_ftell(pb) + size - 4; |
| 53 REGISTER_BSF (H264_MP4TOANNEXB, h264_mp4toannexb); | 85 + if (size < 8) |
| 54 + REGISTER_BSF (MPEG4VIDEO_ES, mpeg4video_es); | 86 + return -1; |
| 55 REGISTER_BSF (IMX_DUMP_HEADER, imx_dump_header); | 87 |
| 56 REGISTER_BSF (MJPEGA_DUMP_HEADER, mjpega_dump_header); | 88 dref->type = get_le32(pb); |
| 57 REGISTER_BSF (MP3_HEADER_COMPRESS, mp3_header_compress); | 89 get_be32(pb); // version + flags |
| 58 Index: patched-ffmpeg-mt/libavcodec/Makefile | 90 Only in ffmpeg-mt/libavformat: mov.c~ |
| 59 =================================================================== | |
| 60 --- patched-ffmpeg-mt/libavcodec/Makefile» (revision 39691) | |
| 61 +++ patched-ffmpeg-mt/libavcodec/Makefile» (working copy) | |
| 62 @@ -526,6 +526,14 @@ | |
| 63 OBJS-$(CONFIG_AAC_ADTSTOASC_BSF) += aac_adtstoasc_bsf.o | |
| 64 OBJS-$(CONFIG_DUMP_EXTRADATA_BSF) += dump_extradata_bsf.o | |
| 65 OBJS-$(CONFIG_H264_MP4TOANNEXB_BSF) += h264_mp4toannexb_bsf.o | |
| 66 +OBJS-$(CONFIG_MPEG4VIDEO_ES_BSF) += mpeg4video_es_bsf.o \ | |
| 67 + mpeg4videoenc.o ituh263enc.o \ | |
| 68 + mpegvideo_enc.o motion_est.o \ | |
| 69 + ratecontrol.o mpeg12data.o \ | |
| 70 + aandcttab.o jfdctfst.o \ | |
| 71 + jfdctint.o faandct.o \ | |
| 72 + mpeg4video_parser.o mpegvideo.o \ | |
| 73 + error_resilience.o | |
| 74 OBJS-$(CONFIG_IMX_DUMP_HEADER_BSF) += imx_dump_header_bsf.o | |
| 75 OBJS-$(CONFIG_MJPEGA_DUMP_HEADER_BSF) += mjpega_dump_header_bsf.o | |
| 76 OBJS-$(CONFIG_MOV2TEXTSUB_BSF) += movsub_bsf.o | |
| 77 Index: patched-ffmpeg-mt/libavcodec/mpeg4video_es_bsf.c | |
| 78 =================================================================== | |
| 79 --- patched-ffmpeg-mt/libavcodec/mpeg4video_es_bsf.c» (revision 0) | |
| 80 +++ patched-ffmpeg-mt/libavcodec/mpeg4video_es_bsf.c» (revision 0) | |
| 81 @@ -0,0 +1,91 @@ | |
| 82 +/* | |
| 83 + * Copyright (c) 2009 Google Inc. | |
| 84 + * | |
| 85 + * This file is part of FFmpeg. | |
| 86 + * | |
| 87 + * FFmpeg is free software; you can redistribute it and/or | |
| 88 + * modify it under the terms of the GNU Lesser General Public | |
| 89 + * License as published by the Free Software Foundation; either | |
| 90 + * version 2.1 of the License, or (at your option) any later version. | |
| 91 + * | |
| 92 + * FFmpeg is distributed in the hope that it will be useful, | |
| 93 + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 94 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 95 + * Lesser General Public License for more details. | |
| 96 + * | |
| 97 + * You should have received a copy of the GNU Lesser General Public | |
| 98 + * License along with FFmpeg; if not, write to the Free Software | |
| 99 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
| 100 + */ | |
| 101 + | |
| 102 +#include "avcodec.h" | |
| 103 +#include "mpegvideo.h" | |
| 104 + | |
| 105 +static int mpeg4video_es_filter(AVBitStreamFilterContext *bsfc, | |
| 106 +» » » » AVCodecContext *avctx, const char *args, | |
| 107 +» » » » uint8_t **poutbuf, int *poutbuf_size, | |
| 108 +» » » » const uint8_t *buf, int buf_size, | |
| 109 +» » » » int keyframe) { | |
| 110 + AVCodecParserContext *cpc; | |
| 111 + ParseContext1 *pc; | |
| 112 + MpegEncContext *s; | |
| 113 + int first_picture; | |
| 114 + int ret; | |
| 115 + uint8_t *frame_data; | |
| 116 + int frame_size; | |
| 117 + int outbuf_idx = 0; | |
| 118 + int count = 0; | |
| 119 + | |
| 120 + if (avctx->codec_id != CODEC_ID_MPEG4) { | |
| 121 + av_log(NULL, AV_LOG_ERROR, "Codec is not MPEG4\n"); | |
| 122 + return -1; | |
| 123 + } | |
| 124 + | |
| 125 + if (!bsfc->parser) { | |
| 126 + bsfc->parser = av_parser_init(CODEC_ID_MPEG4); | |
| 127 + } | |
| 128 + cpc = bsfc->parser; | |
| 129 + pc = cpc->priv_data; | |
| 130 + s = pc->enc; | |
| 131 + | |
| 132 + *poutbuf = NULL; | |
| 133 + *poutbuf_size = 0; | |
| 134 + while (buf_size > 0) { | |
| 135 + first_picture = pc->first_picture; | |
| 136 + ret = cpc->parser->parser_parse(cpc, avctx, &frame_data, &frame_size, b
uf, buf_size); | |
| 137 + | |
| 138 + if (ret < 0) | |
| 139 + return ret; | |
| 140 + | |
| 141 + buf_size -= ret; | |
| 142 + buf += ret; | |
| 143 + | |
| 144 + // If the first picture is decoded, encode the header. | |
| 145 + if (first_picture && !pc->first_picture) { | |
| 146 + assert(!*poutbuf); | |
| 147 + *poutbuf = av_malloc(1024); | |
| 148 + *poutbuf_size = 1024; | |
| 149 + init_put_bits(&s->pb, *poutbuf, 1024); | |
| 150 + mpeg4_encode_visual_object_header(s); | |
| 151 + mpeg4_encode_vol_header(s, 0, 0); | |
| 152 + flush_put_bits(&s->pb); | |
| 153 + outbuf_idx = (put_bits_count(&s->pb)+7)>>3; | |
| 154 + } | |
| 155 + | |
| 156 + if (!frame_size) | |
| 157 + break; | |
| 158 + | |
| 159 + *poutbuf = av_fast_realloc(*poutbuf, poutbuf_size, outbuf_idx + frame_s
ize); | |
| 160 + memcpy(*poutbuf + outbuf_idx, frame_data, frame_size); | |
| 161 + outbuf_idx += frame_size; | |
| 162 + } | |
| 163 + | |
| 164 + *poutbuf_size = outbuf_idx; | |
| 165 + return 0; | |
| 166 +} | |
| 167 + | |
| 168 +AVBitStreamFilter mpeg4video_es_bsf = { | |
| 169 + "mpeg4video_es", | |
| 170 + 0, | |
| 171 + mpeg4video_es_filter, | |
| 172 +}; | |
| OLD | NEW |