You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
Check resync marker only when enabled.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
committed by
Michael Niedermayer
parent
ef9fe5bedd
commit
ce19aec15b
@@ -110,7 +110,7 @@ int av_const h263_get_picture_format(int width, int height);
|
|||||||
|
|
||||||
void ff_clean_h263_qscales(MpegEncContext *s);
|
void ff_clean_h263_qscales(MpegEncContext *s);
|
||||||
int ff_h263_resync(MpegEncContext *s);
|
int ff_h263_resync(MpegEncContext *s);
|
||||||
const uint8_t *ff_h263_find_resync_marker(const uint8_t *p, const uint8_t *end);
|
const uint8_t *ff_h263_find_resync_marker(MpegEncContext *s, const uint8_t *p, const uint8_t *end);
|
||||||
int ff_h263_get_gob_height(MpegEncContext *s);
|
int ff_h263_get_gob_height(MpegEncContext *s);
|
||||||
void ff_h263_encode_motion(MpegEncContext * s, int val, int f_code);
|
void ff_h263_encode_motion(MpegEncContext * s, int val, int f_code);
|
||||||
|
|
||||||
|
@@ -170,7 +170,7 @@ static int decode_slice(MpegEncContext *s){
|
|||||||
|
|
||||||
if (s->avctx->hwaccel) {
|
if (s->avctx->hwaccel) {
|
||||||
const uint8_t *start= s->gb.buffer + get_bits_count(&s->gb)/8;
|
const uint8_t *start= s->gb.buffer + get_bits_count(&s->gb)/8;
|
||||||
const uint8_t *end = ff_h263_find_resync_marker(start + 1, s->gb.buffer_end);
|
const uint8_t *end = ff_h263_find_resync_marker(s, start + 1, s->gb.buffer_end);
|
||||||
skip_bits_long(&s->gb, 8*(end - start));
|
skip_bits_long(&s->gb, 8*(end - start));
|
||||||
return s->avctx->hwaccel->decode_slice(s->avctx, start, end - start);
|
return s->avctx->hwaccel->decode_slice(s->avctx, start, end - start);
|
||||||
}
|
}
|
||||||
|
@@ -207,16 +207,18 @@ static int h263_decode_gob_header(MpegEncContext *s)
|
|||||||
* @param end pointer to the end of the buffer
|
* @param end pointer to the end of the buffer
|
||||||
* @return pointer to the next resync_marker, or end if none was found
|
* @return pointer to the next resync_marker, or end if none was found
|
||||||
*/
|
*/
|
||||||
const uint8_t *ff_h263_find_resync_marker(const uint8_t *av_restrict p, const uint8_t *av_restrict end)
|
const uint8_t *ff_h263_find_resync_marker(MpegEncContext *s, const uint8_t *av_restrict p, const uint8_t *av_restrict end)
|
||||||
{
|
{
|
||||||
av_assert2(p < end);
|
av_assert2(p < end);
|
||||||
|
|
||||||
end-=2;
|
end-=2;
|
||||||
p++;
|
p++;
|
||||||
for(;p<end; p+=2){
|
if(s->resync_marker){
|
||||||
if(!*p){
|
for(;p<end; p+=2){
|
||||||
if (!p[-1] && p[1]) return p - 1;
|
if(!*p){
|
||||||
else if(!p[ 1] && p[2]) return p;
|
if (!p[-1] && p[1]) return p - 1;
|
||||||
|
else if(!p[ 1] && p[2]) return p;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return end+2;
|
return end+2;
|
||||||
|
Reference in New Issue
Block a user