Browse Source

decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)

Originally committed as revision 2896 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.5
Leon van Stuivenberg Michael Niedermayer 21 years ago
parent
commit
e15dec10d5
3 changed files with 42 additions and 6 deletions
  1. +1
    -0
      libavformat/avio.h
  2. +16
    -0
      libavformat/aviobuf.c
  3. +25
    -6
      libavformat/raw.c

+ 1
- 0
libavformat/avio.h View File

@@ -119,6 +119,7 @@ char *url_fgets(ByteIOContext *s, char *buf, int buf_size);
void put_flush_packet(ByteIOContext *s);

int get_buffer(ByteIOContext *s, unsigned char *buf, int size);
int get_partial_buffer(ByteIOContext *s, unsigned char *buf, int size);
int get_byte(ByteIOContext *s);
unsigned int get_le32(ByteIOContext *s);
uint64_t get_le64(ByteIOContext *s);


+ 16
- 0
libavformat/aviobuf.c View File

@@ -309,6 +309,22 @@ int get_buffer(ByteIOContext *s, unsigned char *buf, int size)
return size1 - size;
}

int get_partial_buffer(ByteIOContext *s, unsigned char *buf, int size)
{
int len;

len = s->buf_end - s->buf_ptr;
if (len == 0) {
fill_buffer(s);
len = s->buf_end - s->buf_ptr;
}
if (len > size)
len = size;
memcpy(buf, s->buf_ptr, len);
s->buf_ptr += len;
return len;
}

unsigned int get_le16(ByteIOContext *s)
{
unsigned int val;


+ 25
- 6
libavformat/raw.c View File

@@ -102,6 +102,25 @@ static int raw_read_packet(AVFormatContext *s, AVPacket *pkt)
return ret;
}

static int raw_read_partial_packet(AVFormatContext *s, AVPacket *pkt)
{
int ret, size;

size = RAW_PACKET_SIZE;

if (av_new_packet(pkt, size) < 0)
return -EIO;

pkt->stream_index = 0;
ret = get_partial_buffer(&s->pb, pkt->data, size);
if (ret <= 0) {
av_free_packet(pkt);
return -EIO;
}
pkt->size = ret;
return ret;
}

static int raw_read_close(AVFormatContext *s)
{
return 0;
@@ -247,7 +266,7 @@ AVInputFormat ac3_iformat = {
0,
NULL,
ac3_read_header,
raw_read_packet,
raw_read_partial_packet,
raw_read_close,
.extensions = "ac3",
};
@@ -273,7 +292,7 @@ AVInputFormat h263_iformat = {
0,
h263_probe,
video_read_header,
raw_read_packet,
raw_read_partial_packet,
raw_read_close,
// .extensions = "h263", //FIXME remove after writing mpeg4_probe
.value = CODEC_ID_H263,
@@ -300,7 +319,7 @@ AVInputFormat m4v_iformat = {
0,
NULL /*mpegvideo_probe*/,
video_read_header,
raw_read_packet,
raw_read_partial_packet,
raw_read_close,
.extensions = "m4v", //FIXME remove after writing mpeg4_probe
.value = CODEC_ID_MPEG4,
@@ -327,7 +346,7 @@ AVInputFormat h264_iformat = {
0,
NULL /*mpegvideo_probe*/,
video_read_header,
raw_read_packet,
raw_read_partial_packet,
raw_read_close,
.extensions = "h26l,h264", //FIXME remove after writing mpeg4_probe
.value = CODEC_ID_H264,
@@ -354,7 +373,7 @@ AVInputFormat mpegvideo_iformat = {
0,
mpegvideo_probe,
video_read_header,
raw_read_packet,
raw_read_partial_packet,
raw_read_close,
.value = CODEC_ID_MPEG1VIDEO,
};
@@ -380,7 +399,7 @@ AVInputFormat mjpeg_iformat = {
0,
NULL,
video_read_header,
raw_read_packet,
raw_read_partial_packet,
raw_read_close,
.extensions = "mjpg,mjpeg",
.value = CODEC_ID_MJPEG,


Loading…
Cancel
Save