Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(188)

Side by Side Diff: patched-ffmpeg-mt/libavcodec/mpeg4video_es_bsf.c

Issue 789004: ffmpeg roll of source to mar 9 version... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/ffmpeg/
Patch Set: '' Created 10 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2009 Google Inc. 2 * Copyright (c) 2009 Google Inc.
3 * 3 *
4 * This file is part of FFmpeg. 4 * This file is part of FFmpeg.
5 * 5 *
6 * FFmpeg is free software; you can redistribute it and/or 6 * FFmpeg is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public 7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version. 9 * version 2.1 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 82
83 *poutbuf_size = outbuf_idx; 83 *poutbuf_size = outbuf_idx;
84 return 0; 84 return 0;
85 } 85 }
86 86
87 AVBitStreamFilter mpeg4video_es_bsf = { 87 AVBitStreamFilter mpeg4video_es_bsf = {
88 "mpeg4video_es", 88 "mpeg4video_es",
89 0, 89 0,
90 mpeg4video_es_filter, 90 mpeg4video_es_filter,
91 }; 91 };
92 /*
Lei Zhang 2010/03/19 00:38:33 Oh this is bad merge!
93 * Copyright (c) 2009 Google Inc.
94 *
95 * This file is part of FFmpeg.
96 *
97 * FFmpeg is free software; you can redistribute it and/or
98 * modify it under the terms of the GNU Lesser General Public
99 * License as published by the Free Software Foundation; either
100 * version 2.1 of the License, or (at your option) any later version.
101 *
102 * FFmpeg is distributed in the hope that it will be useful,
103 * but WITHOUT ANY WARRANTY; without even the implied warranty of
104 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
105 * Lesser General Public License for more details.
106 *
107 * You should have received a copy of the GNU Lesser General Public
108 * License along with FFmpeg; if not, write to the Free Software
109 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
110 */
111
112 #include "avcodec.h"
113 #include "mpegvideo.h"
114
115 static int mpeg4video_es_filter(AVBitStreamFilterContext *bsfc,
116 AVCodecContext *avctx, const char *args,
117 uint8_t **poutbuf, int *poutbuf_size,
118 const uint8_t *buf, int buf_size,
119 int keyframe) {
120 AVCodecParserContext *cpc;
121 ParseContext1 *pc;
122 MpegEncContext *s;
123 int first_picture;
124 int ret;
125 uint8_t *frame_data;
126 int frame_size;
127 int outbuf_idx = 0;
128 int count = 0;
129
130 if (avctx->codec_id != CODEC_ID_MPEG4) {
131 av_log(NULL, AV_LOG_ERROR, "Codec is not MPEG4\n");
132 return -1;
133 }
134
135 if (!bsfc->parser) {
136 bsfc->parser = av_parser_init(CODEC_ID_MPEG4);
137 }
138 cpc = bsfc->parser;
139 pc = cpc->priv_data;
140 s = pc->enc;
141
142 *poutbuf = NULL;
143 *poutbuf_size = 0;
144 while (buf_size > 0) {
145 first_picture = pc->first_picture;
146 ret = cpc->parser->parser_parse(cpc, avctx, &frame_data, &frame_size, bu f, buf_size);
147
148 if (ret < 0)
149 return ret;
150
151 buf_size -= ret;
152 buf += ret;
153
154 // If the first picture is decoded, encode the header.
155 if (first_picture && !pc->first_picture) {
156 assert(!*poutbuf);
157 *poutbuf = av_malloc(1024);
158 *poutbuf_size = 1024;
159 init_put_bits(&s->pb, *poutbuf, 1024);
160 mpeg4_encode_visual_object_header(s);
161 mpeg4_encode_vol_header(s, 0, 0);
162 flush_put_bits(&s->pb);
163 outbuf_idx = (put_bits_count(&s->pb)+7)>>3;
164 }
165
166 if (!frame_size)
167 break;
168
169 *poutbuf = av_fast_realloc(*poutbuf, poutbuf_size, outbuf_idx + frame_si ze);
170 memcpy(*poutbuf + outbuf_idx, frame_data, frame_size);
171 outbuf_idx += frame_size;
172 }
173
174 *poutbuf_size = outbuf_idx;
175 return 0;
176 }
177
178 AVBitStreamFilter mpeg4video_es_bsf = {
179 "mpeg4video_es",
180 0,
181 mpeg4video_es_filter,
182 };
OLDNEW
« no previous file with comments | « patched-ffmpeg-mt/libavcodec/mpeg4video.h ('k') | patched-ffmpeg-mt/libavcodec/mpeg4video_parser.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698