mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-07-04 15:28:49 +08:00
Add ff_h263_find_resync_marker() to find the bit position of the next resync_marker, if any.
patch by Gwenole Beauchesne gbeauchesne splitted-desktopcom based on suggested implementation by me Originally committed as revision 17560 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:

committed by
Michael Niedermayer

parent
cd3356ff73
commit
ee3e36315e
@ -3292,6 +3292,27 @@ void ff_mpeg4_clean_buffers(MpegEncContext *s)
|
|||||||
s->last_mv[1][0][1]= 0;
|
s->last_mv[1][0][1]= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* finds the next resync_marker
|
||||||
|
* @param p pointer to buffer to scan
|
||||||
|
* @param end pointer to the end of the buffer
|
||||||
|
* @return pointer to the next resync_marker, or \p end if none was found
|
||||||
|
*/
|
||||||
|
const uint8_t *ff_h263_find_resync_marker(const uint8_t *restrict p, const uint8_t * restrict end)
|
||||||
|
{
|
||||||
|
assert(p < end);
|
||||||
|
|
||||||
|
end-=2;
|
||||||
|
p++;
|
||||||
|
for(;p<end; p+=2){
|
||||||
|
if(!*p){
|
||||||
|
if (!p[-1] && p[1]) return p - 1;
|
||||||
|
else if(!p[ 1] && p[2]) return p;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return end+2;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* decodes the group of blocks / video packet header.
|
* decodes the group of blocks / video packet header.
|
||||||
* @return bit position of the resync_marker, or <0 if none was found
|
* @return bit position of the resync_marker, or <0 if none was found
|
||||||
|
@ -836,6 +836,7 @@ void ff_clean_h263_qscales(MpegEncContext *s);
|
|||||||
int ff_mpeg4_decode_partitions(MpegEncContext *s);
|
int ff_mpeg4_decode_partitions(MpegEncContext *s);
|
||||||
int ff_mpeg4_get_video_packet_prefix_length(MpegEncContext *s);
|
int ff_mpeg4_get_video_packet_prefix_length(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);
|
||||||
int ff_h263_get_gob_height(MpegEncContext *s);
|
int ff_h263_get_gob_height(MpegEncContext *s);
|
||||||
void ff_mpeg4_init_direct_mv(MpegEncContext *s);
|
void ff_mpeg4_init_direct_mv(MpegEncContext *s);
|
||||||
int ff_mpeg4_set_direct_mv(MpegEncContext *s, int mx, int my);
|
int ff_mpeg4_set_direct_mv(MpegEncContext *s, int mx, int my);
|
||||||
|
Reference in New Issue
Block a user