mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-10-11 18:37:55 +08:00
10l (bytes_left() -> url_feof())
10l (updating LRU delta pts for type 1/2 frames) ensure that checksumming isnt enabled if its not needed search for next startcode and then search backward to the next valid frame if an inconsistancy is detected deal with non-frame startcodes in the middle of the stream Originally committed as revision 2972 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
@ -48,7 +48,6 @@ int init_put_byte(ByteIOContext *s,
|
||||
s->eof_reached = 0;
|
||||
s->is_streamed = 0;
|
||||
s->max_packet_size = 0;
|
||||
s->checksum_ptr= NULL;
|
||||
s->update_checksum= NULL;
|
||||
return 0;
|
||||
}
|
||||
@ -60,7 +59,7 @@ static void flush_buffer(ByteIOContext *s)
|
||||
if (s->buf_ptr > s->buffer) {
|
||||
if (s->write_packet)
|
||||
s->write_packet(s->opaque, s->buffer, s->buf_ptr - s->buffer);
|
||||
if(s->checksum_ptr){
|
||||
if(s->update_checksum){
|
||||
s->checksum= s->update_checksum(s->checksum, s->checksum_ptr, s->buf_ptr - s->checksum_ptr);
|
||||
s->checksum_ptr= s->buffer;
|
||||
}
|
||||
@ -250,7 +249,7 @@ static void fill_buffer(ByteIOContext *s)
|
||||
if (s->eof_reached)
|
||||
return;
|
||||
|
||||
if(s->checksum_ptr){
|
||||
if(s->update_checksum){
|
||||
s->checksum= s->update_checksum(s->checksum, s->checksum_ptr, s->buf_end - s->checksum_ptr);
|
||||
s->checksum_ptr= s->buffer;
|
||||
}
|
||||
@ -269,14 +268,16 @@ static void fill_buffer(ByteIOContext *s)
|
||||
|
||||
unsigned long get_checksum(ByteIOContext *s){
|
||||
s->checksum= s->update_checksum(s->checksum, s->checksum_ptr, s->buf_ptr - s->checksum_ptr);
|
||||
s->checksum_ptr= NULL;
|
||||
s->update_checksum= NULL;
|
||||
return s->checksum;
|
||||
}
|
||||
|
||||
void init_checksum(ByteIOContext *s, unsigned long (*update_checksum)(unsigned long c, const uint8_t *p, unsigned int len), unsigned long checksum){
|
||||
s->update_checksum= update_checksum;
|
||||
s->checksum= s->update_checksum(checksum, NULL, 0);
|
||||
s->checksum_ptr= s->buf_ptr;
|
||||
if(s->update_checksum){
|
||||
s->checksum= s->update_checksum(checksum, NULL, 0);
|
||||
s->checksum_ptr= s->buf_ptr;
|
||||
}
|
||||
}
|
||||
|
||||
/* NOTE: return 0 if EOF, so you cannot use it if EOF handling is
|
||||
|
Reference in New Issue
Block a user