Mercurial > libavformat.hg
comparison mmf.c @ 2771:d52c718e83f9 libavformat
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
author | andoma |
---|---|
date | Wed, 21 Nov 2007 07:41:00 +0000 |
parents | 213268d7594e |
children | 7a0230981402 |
comparison
equal
deleted
inserted
replaced
2770:a7e42cf4b364 | 2771:d52c718e83f9 |
---|---|
58 } | 58 } |
59 | 59 |
60 static int mmf_write_header(AVFormatContext *s) | 60 static int mmf_write_header(AVFormatContext *s) |
61 { | 61 { |
62 MMFContext *mmf = s->priv_data; | 62 MMFContext *mmf = s->priv_data; |
63 ByteIOContext *pb = &s->pb; | 63 ByteIOContext *pb = s->pb; |
64 offset_t pos; | 64 offset_t pos; |
65 int rate; | 65 int rate; |
66 | 66 |
67 rate = mmf_rate_code(s->streams[0]->codec->sample_rate); | 67 rate = mmf_rate_code(s->streams[0]->codec->sample_rate); |
68 if(rate < 0) { | 68 if(rate < 0) { |
106 return 0; | 106 return 0; |
107 } | 107 } |
108 | 108 |
109 static int mmf_write_packet(AVFormatContext *s, AVPacket *pkt) | 109 static int mmf_write_packet(AVFormatContext *s, AVPacket *pkt) |
110 { | 110 { |
111 ByteIOContext *pb = &s->pb; | 111 ByteIOContext *pb = s->pb; |
112 put_buffer(pb, pkt->data, pkt->size); | 112 put_buffer(pb, pkt->data, pkt->size); |
113 return 0; | 113 return 0; |
114 } | 114 } |
115 | 115 |
116 /* Write a variable-length symbol */ | 116 /* Write a variable-length symbol */ |
125 } | 125 } |
126 } | 126 } |
127 | 127 |
128 static int mmf_write_trailer(AVFormatContext *s) | 128 static int mmf_write_trailer(AVFormatContext *s) |
129 { | 129 { |
130 ByteIOContext *pb = &s->pb; | 130 ByteIOContext *pb = s->pb; |
131 MMFContext *mmf = s->priv_data; | 131 MMFContext *mmf = s->priv_data; |
132 offset_t pos, size; | 132 offset_t pos, size; |
133 int gatetime; | 133 int gatetime; |
134 | 134 |
135 if (!url_is_streamed(&s->pb)) { | 135 if (!url_is_streamed(s->pb)) { |
136 /* Fill in length fields */ | 136 /* Fill in length fields */ |
137 end_tag_be(pb, mmf->awapos); | 137 end_tag_be(pb, mmf->awapos); |
138 end_tag_be(pb, mmf->atrpos); | 138 end_tag_be(pb, mmf->atrpos); |
139 end_tag_be(pb, 8); | 139 end_tag_be(pb, 8); |
140 | 140 |
181 static int mmf_read_header(AVFormatContext *s, | 181 static int mmf_read_header(AVFormatContext *s, |
182 AVFormatParameters *ap) | 182 AVFormatParameters *ap) |
183 { | 183 { |
184 MMFContext *mmf = s->priv_data; | 184 MMFContext *mmf = s->priv_data; |
185 unsigned int tag; | 185 unsigned int tag; |
186 ByteIOContext *pb = &s->pb; | 186 ByteIOContext *pb = s->pb; |
187 AVStream *st; | 187 AVStream *st; |
188 offset_t file_size, size; | 188 offset_t file_size, size; |
189 int rate, params; | 189 int rate, params; |
190 | 190 |
191 tag = get_le32(pb); | 191 tag = get_le32(pb); |
263 { | 263 { |
264 MMFContext *mmf = s->priv_data; | 264 MMFContext *mmf = s->priv_data; |
265 AVStream *st; | 265 AVStream *st; |
266 int ret, size; | 266 int ret, size; |
267 | 267 |
268 if (url_feof(&s->pb)) | 268 if (url_feof(s->pb)) |
269 return AVERROR(EIO); | 269 return AVERROR(EIO); |
270 st = s->streams[0]; | 270 st = s->streams[0]; |
271 | 271 |
272 size = MAX_SIZE; | 272 size = MAX_SIZE; |
273 if(size > mmf->data_size) | 273 if(size > mmf->data_size) |
278 | 278 |
279 if (av_new_packet(pkt, size)) | 279 if (av_new_packet(pkt, size)) |
280 return AVERROR(EIO); | 280 return AVERROR(EIO); |
281 pkt->stream_index = 0; | 281 pkt->stream_index = 0; |
282 | 282 |
283 ret = get_buffer(&s->pb, pkt->data, pkt->size); | 283 ret = get_buffer(s->pb, pkt->data, pkt->size); |
284 if (ret < 0) | 284 if (ret < 0) |
285 av_free_packet(pkt); | 285 av_free_packet(pkt); |
286 | 286 |
287 mmf->data_size -= ret; | 287 mmf->data_size -= ret; |
288 | 288 |