Use dynamically allocated ByteIOContext in AVFormatContext
patch by: Björn Axelsson, bjorn d axelsson a intinor d se thread: [PATCH] Remove static ByteIOContexts, 06 nov 2007 Originally committed as revision 11071 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
committed by
Andreas Öman
parent
79815f622d
commit
899681cd1d
@@ -60,12 +60,12 @@ static int avs_read_header(AVFormatContext * s, AVFormatParameters * ap)
|
||||
|
||||
s->ctx_flags |= AVFMTCTX_NOHEADER;
|
||||
|
||||
url_fskip(&s->pb, 4);
|
||||
avs->width = get_le16(&s->pb);
|
||||
avs->height = get_le16(&s->pb);
|
||||
avs->bits_per_sample = get_le16(&s->pb);
|
||||
avs->fps = get_le16(&s->pb);
|
||||
avs->nb_frames = get_le32(&s->pb);
|
||||
url_fskip(s->pb, 4);
|
||||
avs->width = get_le16(s->pb);
|
||||
avs->height = get_le16(s->pb);
|
||||
avs->bits_per_sample = get_le16(s->pb);
|
||||
avs->fps = get_le16(s->pb);
|
||||
avs->nb_frames = get_le32(s->pb);
|
||||
avs->remaining_frame_size = 0;
|
||||
avs->remaining_audio_size = 0;
|
||||
|
||||
@@ -103,7 +103,7 @@ avs_read_video_packet(AVFormatContext * s, AVPacket * pkt,
|
||||
pkt->data[palette_size + 1] = type;
|
||||
pkt->data[palette_size + 2] = size & 0xFF;
|
||||
pkt->data[palette_size + 3] = (size >> 8) & 0xFF;
|
||||
ret = get_buffer(&s->pb, pkt->data + palette_size + 4, size - 4) + 4;
|
||||
ret = get_buffer(s->pb, pkt->data + palette_size + 4, size - 4) + 4;
|
||||
if (ret < size) {
|
||||
av_free_packet(pkt);
|
||||
return AVERROR(EIO);
|
||||
@@ -122,9 +122,9 @@ static int avs_read_audio_packet(AVFormatContext * s, AVPacket * pkt)
|
||||
avs_format_t *avs = s->priv_data;
|
||||
int ret, size;
|
||||
|
||||
size = url_ftell(&s->pb);
|
||||
size = url_ftell(s->pb);
|
||||
ret = voc_get_packet(s, pkt, avs->st_audio, avs->remaining_audio_size);
|
||||
size = url_ftell(&s->pb) - size;
|
||||
size = url_ftell(s->pb) - size;
|
||||
avs->remaining_audio_size -= size;
|
||||
|
||||
if (ret == AVERROR(EIO))
|
||||
@@ -153,20 +153,20 @@ static int avs_read_packet(AVFormatContext * s, AVPacket * pkt)
|
||||
|
||||
while (1) {
|
||||
if (avs->remaining_frame_size <= 0) {
|
||||
if (!get_le16(&s->pb)) /* found EOF */
|
||||
if (!get_le16(s->pb)) /* found EOF */
|
||||
return AVERROR(EIO);
|
||||
avs->remaining_frame_size = get_le16(&s->pb) - 4;
|
||||
avs->remaining_frame_size = get_le16(s->pb) - 4;
|
||||
}
|
||||
|
||||
while (avs->remaining_frame_size > 0) {
|
||||
sub_type = get_byte(&s->pb);
|
||||
type = get_byte(&s->pb);
|
||||
size = get_le16(&s->pb);
|
||||
sub_type = get_byte(s->pb);
|
||||
type = get_byte(s->pb);
|
||||
size = get_le16(s->pb);
|
||||
avs->remaining_frame_size -= size;
|
||||
|
||||
switch (type) {
|
||||
case AVS_PALETTE:
|
||||
ret = get_buffer(&s->pb, palette, size - 4);
|
||||
ret = get_buffer(s->pb, palette, size - 4);
|
||||
if (ret < size - 4)
|
||||
return AVERROR(EIO);
|
||||
palette_size = size;
|
||||
@@ -203,7 +203,7 @@ static int avs_read_packet(AVFormatContext * s, AVPacket * pkt)
|
||||
break;
|
||||
|
||||
default:
|
||||
url_fskip(&s->pb, size - 4);
|
||||
url_fskip(s->pb, size - 4);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user