changeset 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 a7e42cf4b364
children b43dc2901f83
files 4xm.c adtsenc.c aiff.c amr.c apc.c ape.c asf-enc.c asf.c au.c avformat.h avidec.c avienc.c avio.h aviobuf.c avs.c bethsoftvid.c c93.c crcenc.c daud.c dsicin.c dv.c dvenc.c dxa.c eacdata.c electronicarts.c ffm.c flic.c flvdec.c flvenc.c framecrcenc.c gif.c gifdec.c gxf.c gxfenc.c idcin.c idroq.c img2.c ipmovie.c libnut.c matroskadec.c matroskaenc.c mm.c mmf.c mov.c movenc.c mp3.c mpc.c mpc8.c mpeg.c mpegenc.c mpegts.c mpegtsenc.c mpjpeg.c mtv.c mxf.c nsvdec.c nutdec.c nutenc.c nuv.c oggdec.c oggenc.c psxstr.c raw.c rmdec.c rmenc.c rtp.c rtsp.c segafilm.c sierravmd.c siff.c smacker.c sol.c swf.c thp.c tiertexseq.c tta.c txd.c utils.c vocdec.c vocenc.c wav.c wc3movie.c westwood.c wv.c yuv4mpeg.c
diffstat 85 files changed, 847 insertions(+), 796 deletions(-) [+]
line wrap: on
line diff
--- a/4xm.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/4xm.c	Wed Nov 21 07:41:00 2007 +0000
@@ -92,7 +92,7 @@
 static int fourxm_read_header(AVFormatContext *s,
                               AVFormatParameters *ap)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     unsigned int fourcc_tag;
     unsigned int size;
     int header_size;
@@ -224,7 +224,7 @@
                               AVPacket *pkt)
 {
     FourxmDemuxContext *fourxm = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     unsigned int fourcc_tag;
     unsigned int size, out_size;
     int ret = 0;
@@ -235,7 +235,7 @@
 
     while (!packet_read) {
 
-        if ((ret = get_buffer(&s->pb, header, 8)) < 0)
+        if ((ret = get_buffer(s->pb, header, 8)) < 0)
             return ret;
         fourcc_tag = AV_RL32(&header[0]);
         size = AV_RL32(&header[4]);
@@ -265,9 +265,9 @@
                 return AVERROR(EIO);
             pkt->stream_index = fourxm->video_stream_index;
             pkt->pts = fourxm->video_pts;
-            pkt->pos = url_ftell(&s->pb);
+            pkt->pos = url_ftell(s->pb);
             memcpy(pkt->data, header, 8);
-            ret = get_buffer(&s->pb, &pkt->data[8], size);
+            ret = get_buffer(s->pb, &pkt->data[8], size);
 
             if (ret < 0)
                 av_free_packet(pkt);
@@ -282,7 +282,7 @@
             size-=8;
 
             if (track_number == fourxm->selected_track) {
-                ret= av_get_packet(&s->pb, pkt, size);
+                ret= av_get_packet(s->pb, pkt, size);
                 if(ret<0)
                     return AVERROR(EIO);
                 pkt->stream_index =
--- a/adtsenc.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/adtsenc.c	Wed Nov 21 07:41:00 2007 +0000
@@ -84,7 +84,7 @@
     put_bits(&pb, 2, 0);        /* number_of_raw_data_blocks_in_frame */
 
     flush_put_bits(&pb);
-    put_buffer(&s->pb, buf, ADTS_HEADER_SIZE);
+    put_buffer(s->pb, buf, ADTS_HEADER_SIZE);
 
     return 0;
 }
@@ -92,7 +92,7 @@
 static int adts_write_packet(AVFormatContext *s, AVPacket *pkt)
 {
     ADTSContext *adts = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
 
     if (!pkt->size)
         return 0;
--- a/aiff.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/aiff.c	Wed Nov 21 07:41:00 2007 +0000
@@ -161,7 +161,7 @@
 static int aiff_write_header(AVFormatContext *s)
 {
     AIFFOutputContext *aiff = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVCodecContext *enc = s->streams[0]->codec;
     AVExtFloat sample_rate;
     int aifc = 0;
@@ -231,14 +231,14 @@
 
 static int aiff_write_packet(AVFormatContext *s, AVPacket *pkt)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     put_buffer(pb, pkt->data, pkt->size);
     return 0;
 }
 
 static int aiff_write_trailer(AVFormatContext *s)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AIFFOutputContext *aiff = s->priv_data;
     AVCodecContext *enc = s->streams[0]->codec;
 
@@ -250,7 +250,7 @@
         end_size++;
     }
 
-    if (!url_is_streamed(&s->pb)) {
+    if (!url_is_streamed(s->pb)) {
         /* File length */
         url_fseek(pb, aiff->form, SEEK_SET);
         put_be32(pb, (uint32_t)(file_size - aiff->form - 4));
@@ -293,7 +293,7 @@
     offset_t offset = 0;
     uint32_t tag;
     unsigned version = AIFF_C_VERSION1;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVStream * st = s->streams[0];
 
     /* check FORM header */
@@ -399,11 +399,11 @@
     int res;
 
     /* End of stream may be reached */
-    if (url_feof(&s->pb))
+    if (url_feof(s->pb))
         return AVERROR(EIO);
 
     /* Now for that packet */
-    res = av_get_packet(&s->pb, pkt, (MAX_SIZE / st->codec->block_align) * st->codec->block_align);
+    res = av_get_packet(s->pb, pkt, (MAX_SIZE / st->codec->block_align) * st->codec->block_align);
     if (res < 0)
         return res;
 
--- a/amr.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/amr.c	Wed Nov 21 07:41:00 2007 +0000
@@ -33,7 +33,7 @@
 #ifdef CONFIG_MUXERS
 static int amr_write_header(AVFormatContext *s)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVCodecContext *enc = s->streams[0]->codec;
 
     s->priv_data = NULL;
@@ -56,8 +56,8 @@
 
 static int amr_write_packet(AVFormatContext *s, AVPacket *pkt)
 {
-    put_buffer(&s->pb, pkt->data, pkt->size);
-    put_flush_packet(&s->pb);
+    put_buffer(s->pb, pkt->data, pkt->size);
+    put_flush_packet(s->pb);
     return 0;
 }
 #endif /* CONFIG_MUXERS */
@@ -78,7 +78,7 @@
 static int amr_read_header(AVFormatContext *s,
                            AVFormatParameters *ap)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVStream *st;
     uint8_t header[9];
 
@@ -120,13 +120,13 @@
     AVCodecContext *enc = s->streams[0]->codec;
     int read, size = 0, toc, mode;
 
-    if (url_feof(&s->pb))
+    if (url_feof(s->pb))
     {
         return AVERROR(EIO);
     }
 
 //FIXME this is wrong, this should rather be in a AVParset
-    toc=get_byte(&s->pb);
+    toc=get_byte(s->pb);
     mode = (toc >> 3) & 0x0F;
 
     if (enc->codec_id == CODEC_ID_AMR_NB)
@@ -152,10 +152,10 @@
     }
 
     pkt->stream_index = 0;
-    pkt->pos= url_ftell(&s->pb);
+    pkt->pos= url_ftell(s->pb);
     pkt->data[0]=toc;
     pkt->duration= enc->codec_id == CODEC_ID_AMR_NB ? 160 : 320;
-    read = get_buffer(&s->pb, pkt->data+1, size-1);
+    read = get_buffer(s->pb, pkt->data+1, size-1);
 
     if (read != size-1)
     {
--- a/apc.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/apc.c	Wed Nov 21 07:41:00 2007 +0000
@@ -32,7 +32,7 @@
 
 static int apc_read_header(AVFormatContext *s, AVFormatParameters *ap)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVStream *st;
 
     get_le32(pb); /* CRYO */
@@ -74,7 +74,7 @@
 
 static int apc_read_packet(AVFormatContext *s, AVPacket *pkt)
 {
-    if (av_get_packet(&s->pb, pkt, MAX_READ_SIZE) <= 0)
+    if (av_get_packet(s->pb, pkt, MAX_READ_SIZE) <= 0)
         return AVERROR(EIO);
     pkt->stream_index = 0;
     return 0;
--- a/ape.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/ape.c	Wed Nov 21 07:41:00 2007 +0000
@@ -110,7 +110,7 @@
 
 static void ape_tag_read_field(AVFormatContext *s)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     uint8_t buf[1024];
     uint32_t size;
     int i;
@@ -143,7 +143,7 @@
 
 static void ape_parse_tag(AVFormatContext *s)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int file_size = url_fsize(pb);
     uint32_t val, fields, tag_bytes;
     uint8_t buf[8];
@@ -270,7 +270,7 @@
 
 static int ape_read_header(AVFormatContext * s, AVFormatParameters * ap)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     APEContext *ape = s->priv_data;
     AVStream *st;
     uint32_t tag;
@@ -456,12 +456,12 @@
     APEContext *ape = s->priv_data;
     uint32_t extra_size = 8;
 
-    if (url_feof(&s->pb))
+    if (url_feof(s->pb))
         return AVERROR_IO;
     if (ape->currentframe > ape->totalframes)
         return AVERROR_IO;
 
-    url_fseek (&s->pb, ape->frames[ape->currentframe].pos, SEEK_SET);
+    url_fseek (s->pb, ape->frames[ape->currentframe].pos, SEEK_SET);
 
     /* Calculate how many blocks there are in this frame */
     if (ape->currentframe == (ape->totalframes - 1))
@@ -474,7 +474,7 @@
 
     AV_WL32(pkt->data    , nblocks);
     AV_WL32(pkt->data + 4, ape->frames[ape->currentframe].skip);
-    ret = get_buffer(&s->pb, pkt->data + extra_size, ape->frames[ape->currentframe].size);
+    ret = get_buffer(s->pb, pkt->data + extra_size, ape->frames[ape->currentframe].size);
 
     pkt->pts = ape->frames[ape->currentframe].pts;
     pkt->stream_index = 0;
--- a/asf-enc.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/asf-enc.c	Wed Nov 21 07:41:00 2007 +0000
@@ -244,7 +244,7 @@
 static void put_chunk(AVFormatContext *s, int type, int payload_length, int flags)
 {
     ASFContext *asf = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int length;
 
     length = payload_length + 8;
@@ -270,7 +270,7 @@
 static int asf_write_header1(AVFormatContext *s, int64_t file_size, int64_t data_chunk_size)
 {
     ASFContext *asf = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int header_size, n, extra_size, extra_size2, wav_extra_size, file_time;
     int has_title;
     AVCodecContext *enc;
@@ -506,7 +506,7 @@
         return -1;
     }
 
-    put_flush_packet(&s->pb);
+    put_flush_packet(s->pb);
 
     asf->packet_nb_payloads = 0;
     asf->packet_timestamp_start = -1;
@@ -535,7 +535,7 @@
             )
 {
     ASFContext *asf = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int ppi_size, i;
     int64_t start= url_ftell(pb);
 
@@ -600,9 +600,9 @@
     assert(packet_hdr_size <= asf->packet_size_left);
     memset(asf->packet_buf + packet_filled_size, 0, asf->packet_size_left);
 
-    put_buffer(&s->pb, asf->packet_buf, asf->packet_size - packet_hdr_size);
+    put_buffer(s->pb, asf->packet_buf, asf->packet_size - packet_hdr_size);
 
-    put_flush_packet(&s->pb);
+    put_flush_packet(s->pb);
     asf->nb_packets++;
     asf->packet_nb_payloads = 0;
     asf->packet_timestamp_start = -1;
@@ -766,7 +766,7 @@
 //
 static int asf_write_index(AVFormatContext *s, ASFIndex *index, uint16_t max, uint32_t count)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int i;
 
     put_guid(pb, &simple_index_header);
@@ -793,22 +793,22 @@
         flush_packet(s);
 
     /* write index */
-    data_size = url_ftell(&s->pb);
+    data_size = url_ftell(s->pb);
     if ((!asf->is_streamed) && (asf->nb_index_count != 0)) {
         asf_write_index(s, asf->index_ptr, asf->maximum_packet, asf->nb_index_count);
     }
-    put_flush_packet(&s->pb);
+    put_flush_packet(s->pb);
 
-    if (asf->is_streamed || url_is_streamed(&s->pb)) {
+    if (asf->is_streamed || url_is_streamed(s->pb)) {
         put_chunk(s, 0x4524, 0, 0); /* end of stream */
     } else {
         /* rewrite an updated header */
-        file_size = url_ftell(&s->pb);
-        url_fseek(&s->pb, 0, SEEK_SET);
+        file_size = url_ftell(s->pb);
+        url_fseek(s->pb, 0, SEEK_SET);
         asf_write_header1(s, file_size, data_size - asf->data_offset);
     }
 
-    put_flush_packet(&s->pb);
+    put_flush_packet(s->pb);
     av_free(asf->index_ptr);
     return 0;
 }
--- a/asf.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/asf.c	Wed Nov 21 07:41:00 2007 +0000
@@ -148,7 +148,7 @@
 {
     ASFContext *asf = s->priv_data;
     GUID g;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVStream *st;
     ASFStream *asf_st;
     int size, i;
@@ -582,12 +582,12 @@
 static int asf_get_packet(AVFormatContext *s)
 {
     ASFContext *asf = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     uint32_t packet_length, padsize;
     int rsize = 8;
     int c, d, e, off;
 
-    off= (url_ftell(&s->pb) - s->data_offset) % asf->packet_size + 3;
+    off= (url_ftell(s->pb) - s->data_offset) % asf->packet_size + 3;
 
     c=d=e=-1;
     while(off-- > 0){
@@ -658,7 +658,7 @@
  */
 static int asf_read_frame_header(AVFormatContext *s){
     ASFContext *asf = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int rsize = 1;
     int num = get_byte(pb);
     int64_t ts0, ts1;
@@ -731,7 +731,7 @@
 {
     ASFContext *asf = s->priv_data;
     ASFStream *asf_st = 0;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     //static int pc = 0;
     for (;;) {
         if(url_feof(pb))
@@ -745,7 +745,7 @@
             /* fail safe */
             url_fskip(pb, ret);
 
-            asf->packet_pos= url_ftell(&s->pb);
+            asf->packet_pos= url_ftell(s->pb);
             if (asf->data_object_size != (uint64_t)-1 &&
                 (asf->packet_pos - asf->data_object_offset >= asf->data_object_size))
                 return AVERROR(EIO); /* Do not exceed the size of the data object */
@@ -968,7 +968,7 @@
 
     pos= (pos+asf->packet_size-1-s->data_offset)/asf->packet_size*asf->packet_size+ s->data_offset;
     *ppos= pos;
-    url_fseek(&s->pb, pos, SEEK_SET);
+    url_fseek(s->pb, pos, SEEK_SET);
 
 //printf("asf_read_pts\n");
     asf_reset_header(s);
@@ -1012,21 +1012,21 @@
     int i;
     int pct,ict;
 
-    current_pos = url_ftell(&s->pb);
+    current_pos = url_ftell(s->pb);
 
-    url_fseek(&s->pb, asf->data_object_offset + asf->data_object_size, SEEK_SET);
-    get_guid(&s->pb, &g);
+    url_fseek(s->pb, asf->data_object_offset + asf->data_object_size, SEEK_SET);
+    get_guid(s->pb, &g);
     if (!memcmp(&g, &index_guid, sizeof(GUID))) {
-        gsize = get_le64(&s->pb);
-        get_guid(&s->pb, &g);
-        itime=get_le64(&s->pb);
-        pct=get_le32(&s->pb);
-        ict=get_le32(&s->pb);
+        gsize = get_le64(s->pb);
+        get_guid(s->pb, &g);
+        itime=get_le64(s->pb);
+        pct=get_le32(s->pb);
+        ict=get_le32(s->pb);
         av_log(NULL, AV_LOG_DEBUG, "itime:0x%"PRIx64", pct:%d, ict:%d\n",itime,pct,ict);
 
         for (i=0;i<ict;i++){
-            int pktnum=get_le32(&s->pb);
-            int pktct =get_le16(&s->pb);
+            int pktnum=get_le32(s->pb);
+            int pktct =get_le16(s->pb);
             av_log(NULL, AV_LOG_DEBUG, "pktnum:%d, pktct:%d\n", pktnum, pktct);
 
             pos=s->data_offset + asf->packet_size*(int64_t)pktnum;
@@ -1036,7 +1036,7 @@
         }
         asf->index_read= 1;
     }
-    url_fseek(&s->pb, current_pos, SEEK_SET);
+    url_fseek(s->pb, current_pos, SEEK_SET);
 }
 
 static int asf_read_seek(AVFormatContext *s, int stream_index, int64_t pts, int flags)
@@ -1066,10 +1066,10 @@
 
     // various attempts to find key frame have failed so far
     //    asf_reset_header(s);
-    //    url_fseek(&s->pb, pos, SEEK_SET);
+    //    url_fseek(s->pb, pos, SEEK_SET);
     //    key_pos = pos;
     //     for(i=0;i<16;i++){
-    //         pos = url_ftell(&s->pb);
+    //         pos = url_ftell(s->pb);
     //         if (av_read_frame(s, &pkt) < 0){
     //             av_log(s, AV_LOG_INFO, "seek failed\n");
     //             return -1;
@@ -1087,7 +1087,7 @@
 
         /* do the seek */
         av_log(NULL, AV_LOG_DEBUG, "SEEKTO: %"PRId64"\n", pos);
-        url_fseek(&s->pb, pos, SEEK_SET);
+        url_fseek(s->pb, pos, SEEK_SET);
     }
     asf_reset_header(s);
     return 0;
--- a/au.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/au.c	Wed Nov 21 07:41:00 2007 +0000
@@ -59,7 +59,7 @@
 
 static int au_write_header(AVFormatContext *s)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
 
     s->priv_data = NULL;
 
@@ -75,17 +75,17 @@
 
 static int au_write_packet(AVFormatContext *s, AVPacket *pkt)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     put_buffer(pb, pkt->data, pkt->size);
     return 0;
 }
 
 static int au_write_trailer(AVFormatContext *s)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     offset_t file_size;
 
-    if (!url_is_streamed(&s->pb)) {
+    if (!url_is_streamed(s->pb)) {
 
         /* update file size */
         file_size = url_ftell(pb);
@@ -116,7 +116,7 @@
 {
     int size;
     unsigned int tag;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     unsigned int id, codec, channels, rate;
     AVStream *st;
 
@@ -158,9 +158,9 @@
 {
     int ret;
 
-    if (url_feof(&s->pb))
+    if (url_feof(s->pb))
         return AVERROR(EIO);
-    ret= av_get_packet(&s->pb, pkt, MAX_SIZE);
+    ret= av_get_packet(s->pb, pkt, MAX_SIZE);
     if (ret < 0)
         return AVERROR(EIO);
     pkt->stream_index = 0;
--- a/avformat.h	Mon Nov 19 20:28:11 2007 +0000
+++ b/avformat.h	Wed Nov 21 07:41:00 2007 +0000
@@ -21,8 +21,8 @@
 #ifndef FFMPEG_AVFORMAT_H
 #define FFMPEG_AVFORMAT_H
 
-#define LIBAVFORMAT_VERSION_INT ((51<<16)+(19<<8)+0)
-#define LIBAVFORMAT_VERSION     51.19.0
+#define LIBAVFORMAT_VERSION_INT ((52<<16)+(0<<8)+0)
+#define LIBAVFORMAT_VERSION     52.0.0
 #define LIBAVFORMAT_BUILD       LIBAVFORMAT_VERSION_INT
 
 #define LIBAVFORMAT_IDENT       "Lavf" AV_STRINGIFY(LIBAVFORMAT_VERSION)
@@ -369,7 +369,7 @@
     struct AVInputFormat *iformat;
     struct AVOutputFormat *oformat;
     void *priv_data;
-    ByteIOContext pb;
+    ByteIOContext *pb;
     unsigned int nb_streams;
     AVStream *streams[MAX_STREAMS];
     char filename[1024]; /**< input or output filename */
--- a/avidec.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/avidec.c	Wed Nov 21 07:41:00 2007 +0000
@@ -106,7 +106,7 @@
 
 static int read_braindead_odml_indx(AVFormatContext *s, int frame_num){
     AVIContext *avi = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int longs_pre_entry= get_le16(pb);
     int index_sub_type = get_byte(pb);
     int index_type     = get_byte(pb);
@@ -118,7 +118,7 @@
     AVIStream *ast;
     int i;
     int64_t last_pos= -1;
-    int64_t filesize= url_fsize(&s->pb);
+    int64_t filesize= url_fsize(s->pb);
 
 #ifdef DEBUG_SEEK
     av_log(s, AV_LOG_ERROR, "longs_pre_entry:%d index_type:%d entries_in_use:%d chunk_id:%X base:%16"PRIX64"\n",
@@ -225,7 +225,7 @@
 static int avi_read_header(AVFormatContext *s, AVFormatParameters *ap)
 {
     AVIContext *avi = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     uint32_t tag, tag1, handler;
     int codec_type, stream_index, frame_period, bit_rate;
     unsigned int size, nb_frames;
@@ -583,7 +583,7 @@
 static int avi_read_packet(AVFormatContext *s, AVPacket *pkt)
 {
     AVIContext *avi = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int n, d[8], size;
     offset_t i, sync;
     void* dstr;
@@ -628,7 +628,7 @@
         if(i>=0){
             int64_t pos= best_st->index_entries[i].pos;
             pos += best_ast->packet_size - best_ast->remaining;
-            url_fseek(&s->pb, pos + 8, SEEK_SET);
+            url_fseek(s->pb, pos + 8, SEEK_SET);
 //        av_log(NULL, AV_LOG_DEBUG, "pos=%"PRId64"\n", pos);
 
             assert(best_ast->remaining <= best_ast->packet_size);
@@ -819,7 +819,7 @@
 static int avi_read_idx1(AVFormatContext *s, int size)
 {
     AVIContext *avi = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int nb_index_entries, i;
     AVStream *st;
     AVIStream *ast;
@@ -890,7 +890,7 @@
 static int avi_load_index(AVFormatContext *s)
 {
     AVIContext *avi = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     uint32_t tag, size;
     offset_t pos= url_ftell(pb);
 
@@ -965,7 +965,7 @@
         /* DV demux so it can synth correct timestamps              */
         dv_offset_reset(avi->dv_demux, timestamp);
 
-        url_fseek(&s->pb, pos, SEEK_SET);
+        url_fseek(s->pb, pos, SEEK_SET);
         avi->stream_index= -1;
         return 0;
     }
@@ -1005,7 +1005,7 @@
     }
 
     /* do the seek */
-    url_fseek(&s->pb, pos, SEEK_SET);
+    url_fseek(s->pb, pos, SEEK_SET);
     avi->stream_index= -1;
     return 0;
 }
--- a/avienc.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/avienc.c	Wed Nov 21 07:41:00 2007 +0000
@@ -105,7 +105,7 @@
 
 static int avi_write_counters(AVFormatContext* s, int riff_id)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVIContext *avi = s->priv_data;
     int n, au_byterate, au_ssize, au_scale, nb_frames = 0;
     offset_t file_size;
@@ -138,7 +138,7 @@
 static int avi_write_header(AVFormatContext *s)
 {
     AVIContext *avi = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int bitrate, n, i, nb_frames, au_byterate, au_ssize, au_scale;
     AVCodecContext *stream, *video_enc;
     offset_t list1, list2, strh, strf;
@@ -332,7 +332,7 @@
 
 static int avi_write_ix(AVFormatContext *s)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVIContext *avi = s->priv_data;
     char tag[5];
     char ix_tag[] = "ix00";
@@ -389,7 +389,7 @@
 
 static int avi_write_idx1(AVFormatContext *s)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVIContext *avi = s->priv_data;
     offset_t idx_chunk;
     int i;
@@ -435,7 +435,7 @@
 static int avi_write_packet(AVFormatContext *s, AVPacket *pkt)
 {
     AVIContext *avi = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     unsigned char tag[5];
     unsigned int flags=0;
     const int stream_index= pkt->stream_index;
@@ -476,7 +476,7 @@
        avi->audio_strm_length[stream_index] += size;
     }
 
-    if (!url_is_streamed(&s->pb)) {
+    if (!url_is_streamed(s->pb)) {
         AVIIndex* idx = &avi->indexes[stream_index];
         int cl = idx->entry / AVI_INDEX_CLUSTER_SIZE;
         int id = idx->entry % AVI_INDEX_CLUSTER_SIZE;
@@ -509,7 +509,7 @@
 static int avi_write_trailer(AVFormatContext *s)
 {
     AVIContext *avi = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int res = 0;
     int i, j, n, nb_frames;
     offset_t file_size;
--- a/avio.h	Mon Nov 19 20:28:11 2007 +0000
+++ b/avio.h	Wed Nov 21 07:41:00 2007 +0000
@@ -201,7 +201,7 @@
 
 /** @note when opened as read/write, the buffers are only used for
    writing */
-int url_fdopen(ByteIOContext *s, URLContext *h);
+int url_fdopen(ByteIOContext **s, URLContext *h);
 
 /** @warning must be called before any I/O */
 int url_setbufsize(ByteIOContext *s, int buf_size);
@@ -213,7 +213,7 @@
 
 /** @note when opened as read/write, the buffers are only used for
    writing */
-int url_fopen(ByteIOContext *s, const char *filename, int flags);
+int url_fopen(ByteIOContext **s, const char *filename, int flags);
 int url_fclose(ByteIOContext *s);
 URLContext *url_fileno(ByteIOContext *s);
 
@@ -227,7 +227,7 @@
  */
 int url_fget_max_packet_size(ByteIOContext *s);
 
-int url_open_buf(ByteIOContext *s, uint8_t *buf, int buf_size, int flags);
+int url_open_buf(ByteIOContext **s, uint8_t *buf, int buf_size, int flags);
 
 /** return the written or read size */
 int url_close_buf(ByteIOContext *s);
@@ -238,7 +238,7 @@
  * @param s new IO context
  * @return zero if no error.
  */
-int url_open_dyn_buf(ByteIOContext *s);
+int url_open_dyn_buf(ByteIOContext **s);
 
 /**
  * Open a write only packetized memory stream with a maximum packet
@@ -249,7 +249,7 @@
  * @param max_packet_size maximum packet size (must be > 0)
  * @return zero if no error.
  */
-int url_open_dyn_packet_buf(ByteIOContext *s, int max_packet_size);
+int url_open_dyn_packet_buf(ByteIOContext **s, int max_packet_size);
 
 /**
  * Return the written size and a pointer to the buffer. The buffer
--- a/aviobuf.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/aviobuf.c	Wed Nov 21 07:41:00 2007 +0000
@@ -111,7 +111,12 @@
 offset_t url_fseek(ByteIOContext *s, offset_t offset, int whence)
 {
     offset_t offset1;
-    offset_t pos= s->pos - (s->write_flag ? 0 : (s->buf_end - s->buffer));
+    offset_t pos;
+
+    if(!s)
+        return AVERROR(EINVAL);
+
+    pos = s->pos - (s->write_flag ? 0 : (s->buf_end - s->buffer));
 
     if (whence != SEEK_CUR && whence != SEEK_SET)
         return AVERROR(EINVAL);
@@ -167,6 +172,9 @@
 {
     offset_t size;
 
+    if(!s)
+        return AVERROR(EINVAL);
+
     if (!s->seek)
         return AVERROR(EPIPE);
     size = s->seek(s->opaque, 0, AVSEEK_SIZE);
@@ -181,11 +189,15 @@
 
 int url_feof(ByteIOContext *s)
 {
+    if(!s)
+        return 0;
     return s->eof_reached;
 }
 
 int url_ferror(ByteIOContext *s)
 {
+    if(!s)
+        return 0;
     return s->error;
 }
 
@@ -508,7 +520,7 @@
     //return 0;
 }
 
-int url_fdopen(ByteIOContext *s, URLContext *h)
+int url_fdopen(ByteIOContext **s, URLContext *h)
 {
     uint8_t *buffer;
     int buffer_size, max_packet_size;
@@ -524,14 +536,21 @@
     if (!buffer)
         return AVERROR(ENOMEM);
 
-    if (init_put_byte(s, buffer, buffer_size,
+    *s = av_mallocz(sizeof(ByteIOContext));
+    if(!*s) {
+        av_free(buffer);
+        return AVERROR(ENOMEM);
+    }
+
+    if (init_put_byte(*s, buffer, buffer_size,
                       (h->flags & URL_WRONLY || h->flags & URL_RDWR), h,
                       url_read_packet, url_write_packet, url_seek_packet) < 0) {
         av_free(buffer);
+        av_freep(s);
         return AVERROR(EIO);
     }
-    s->is_streamed = h->is_streamed;
-    s->max_packet_size = max_packet_size;
+    (*s)->is_streamed = h->is_streamed;
+    (*s)->max_packet_size = max_packet_size;
     return 0;
 }
 
@@ -566,7 +585,7 @@
     return 0;
 }
 
-int url_fopen(ByteIOContext *s, const char *filename, int flags)
+int url_fopen(ByteIOContext **s, const char *filename, int flags)
 {
     URLContext *h;
     int err;
@@ -587,7 +606,7 @@
     URLContext *h = s->opaque;
 
     av_free(s->buffer);
-    memset(s, 0, sizeof(ByteIOContext));
+    av_free(s);
     return url_close(h);
 }
 
@@ -641,11 +660,18 @@
  * back to the server even if CONFIG_MUXERS is not set. */
 #if defined(CONFIG_MUXERS) || defined(CONFIG_NETWORK)
 /* buffer handling */
-int url_open_buf(ByteIOContext *s, uint8_t *buf, int buf_size, int flags)
+int url_open_buf(ByteIOContext **s, uint8_t *buf, int buf_size, int flags)
 {
-    return init_put_byte(s, buf, buf_size,
-                         (flags & URL_WRONLY || flags & URL_RDWR),
-                         NULL, NULL, NULL, NULL);
+    int ret;
+    *s = av_mallocz(sizeof(ByteIOContext));
+    if(!*s)
+        return AVERROR(ENOMEM);
+    ret = init_put_byte(*s, buf, buf_size,
+                        (flags & URL_WRONLY || flags & URL_RDWR),
+                        NULL, NULL, NULL, NULL);
+    if(ret != 0)
+        av_freep(s);
+    return ret;
 }
 
 int url_close_buf(ByteIOContext *s)
@@ -725,7 +751,7 @@
     return 0;
 }
 
-static int url_open_dyn_buf_internal(ByteIOContext *s, int max_packet_size)
+static int url_open_dyn_buf_internal(ByteIOContext **s, int max_packet_size)
 {
     DynBuffer *d;
     int io_buffer_size, ret;
@@ -740,27 +766,35 @@
     d = av_malloc(sizeof(DynBuffer) + io_buffer_size);
     if (!d)
         return -1;
+    *s = av_mallocz(sizeof(ByteIOContext));
+    if(!*s) {
+        av_free(d);
+        return AVERROR(ENOMEM);
+    }
     d->io_buffer_size = io_buffer_size;
     d->buffer = NULL;
     d->pos = 0;
     d->size = 0;
     d->allocated_size = 0;
-    ret = init_put_byte(s, d->io_buffer, io_buffer_size,
+    ret = init_put_byte(*s, d->io_buffer, io_buffer_size,
                         1, d, NULL,
                         max_packet_size ? dyn_packet_buf_write : dyn_buf_write,
                         max_packet_size ? NULL : dyn_buf_seek);
     if (ret == 0) {
-        s->max_packet_size = max_packet_size;
+        (*s)->max_packet_size = max_packet_size;
+    } else {
+        av_free(d);
+        av_freep(s);
     }
     return ret;
 }
 
-int url_open_dyn_buf(ByteIOContext *s)
+int url_open_dyn_buf(ByteIOContext **s)
 {
     return url_open_dyn_buf_internal(s, 0);
 }
 
-int url_open_dyn_packet_buf(ByteIOContext *s, int max_packet_size)
+int url_open_dyn_packet_buf(ByteIOContext **s, int max_packet_size)
 {
     if (max_packet_size <= 0)
         return -1;
@@ -777,6 +811,7 @@
     *pbuffer = d->buffer;
     size = d->size;
     av_free(d);
+    av_free(s);
     return size;
 }
 #endif /* CONFIG_MUXERS || CONFIG_NETWORK */
--- a/avs.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/avs.c	Wed Nov 21 07:41:00 2007 +0000
@@ -60,12 +60,12 @@
 
     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 @@
     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 @@
     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 @@
 
     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 @@
                 break;
 
             default:
-                url_fskip(&s->pb, size - 4);
+                url_fskip(s->pb, size - 4);
             }
         }
     }
--- a/bethsoftvid.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/bethsoftvid.c	Wed Nov 21 07:41:00 2007 +0000
@@ -59,7 +59,7 @@
                             AVFormatParameters *ap)
 {
     BVID_DemuxContext *vid = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVStream *stream;
 
     /* load main header. Contents:
@@ -173,7 +173,7 @@
                            AVPacket *pkt)
 {
     BVID_DemuxContext *vid = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     unsigned char block_type;
     int audio_length;
     int ret_value;
--- a/c93.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/c93.c	Wed Nov 21 07:41:00 2007 +0000
@@ -56,7 +56,7 @@
                            AVFormatParameters *ap)
 {
     AVStream *video;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     C93DemuxContext *c93 = s->priv_data;
     int i;
     int framecount = 0;
@@ -101,7 +101,7 @@
 
 static int read_packet(AVFormatContext *s, AVPacket *pkt)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     C93DemuxContext *c93 = s->priv_data;
     C93BlockRecord *br = &c93->block_records[c93->current_block];
     int datasize;
--- a/crcenc.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/crcenc.c	Wed Nov 21 07:41:00 2007 +0000
@@ -48,8 +48,8 @@
     char buf[64];
 
     snprintf(buf, sizeof(buf), "CRC=0x%08x\n", crc->crcval);
-    put_buffer(&s->pb, buf, strlen(buf));
-    put_flush_packet(&s->pb);
+    put_buffer(s->pb, buf, strlen(buf));
+    put_flush_packet(s->pb);
     return 0;
 }
 
--- a/daud.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/daud.c	Wed Nov 21 07:41:00 2007 +0000
@@ -34,7 +34,7 @@
 }
 
 static int daud_packet(AVFormatContext *s, AVPacket *pkt) {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int ret, size;
     if (url_feof(pb))
         return AVERROR(EIO);
--- a/dsicin.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/dsicin.c	Wed Nov 21 07:41:00 2007 +0000
@@ -94,7 +94,7 @@
     int rc;
     CinDemuxContext *cin = s->priv_data;
     CinFileHeader *hdr = &cin->file_header;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVStream *st;
 
     rc = cin_read_file_header(cin, pb);
@@ -158,7 +158,7 @@
 static int cin_read_packet(AVFormatContext *s, AVPacket *pkt)
 {
     CinDemuxContext *cin = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     CinFrameHeader *hdr = &cin->frame_header;
     int rc, palette_type, pkt_size;
 
--- a/dv.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/dv.c	Wed Nov 21 07:41:00 2007 +0000
@@ -347,7 +347,7 @@
     // FIXME: sys may be wrong if last dv_read_packet() failed (buffer is junk)
     const DVprofile* sys = dv_codec_profile(c->vst->codec);
     int64_t offset;
-    int64_t size = url_fsize(&s->pb);
+    int64_t size = url_fsize(s->pb);
     int64_t max_offset = ((size-1) / sys->frame_size) * sys->frame_size;
 
     offset = sys->frame_size * timestamp;
@@ -386,8 +386,8 @@
     if (!c->dv_demux)
         return -1;
 
-    if (get_buffer(&s->pb, c->buf, DV_PROFILE_BYTES) <= 0 ||
-        url_fseek(&s->pb, -DV_PROFILE_BYTES, SEEK_CUR) < 0)
+    if (get_buffer(s->pb, c->buf, DV_PROFILE_BYTES) <= 0 ||
+        url_fseek(s->pb, -DV_PROFILE_BYTES, SEEK_CUR) < 0)
         return AVERROR(EIO);
 
     c->dv_demux->sys = dv_frame_profile(c->buf);
@@ -408,7 +408,7 @@
 
     if (size < 0) {
         size = c->dv_demux->sys->frame_size;
-        if (get_buffer(&s->pb, c->buf, size) <= 0)
+        if (get_buffer(s->pb, c->buf, size) <= 0)
             return AVERROR(EIO);
 
         size = dv_produce_packet(c->dv_demux, pkt, c->buf, size);
@@ -426,7 +426,7 @@
 
     dv_offset_reset(c, offset / c->sys->frame_size);
 
-    offset = url_fseek(&s->pb, offset, SEEK_SET);
+    offset = url_fseek(s->pb, offset, SEEK_SET);
     return (offset < 0)?offset:0;
 }
 
--- a/dvenc.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/dvenc.c	Wed Nov 21 07:41:00 2007 +0000
@@ -380,8 +380,8 @@
     fsize = dv_assemble_frame(s->priv_data, s->streams[pkt->stream_index],
                               pkt->data, pkt->size, &frame);
     if (fsize > 0) {
-        put_buffer(&s->pb, frame, fsize);
-        put_flush_packet(&s->pb);
+        put_buffer(s->pb, frame, fsize);
+        put_flush_packet(s->pb);
     }
     return 0;
 }
--- a/dxa.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/dxa.c	Wed Nov 21 07:41:00 2007 +0000
@@ -45,7 +45,7 @@
 
 static int dxa_read_header(AVFormatContext *s, AVFormatParameters *ap)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     DXAContext *c = s->priv_data;
     AVStream *st, *ast;
     uint32_t tag;
@@ -144,19 +144,19 @@
 
     if(!c->readvid && c->has_sound && c->bytes_left){
         c->readvid = 1;
-        url_fseek(&s->pb, c->wavpos, SEEK_SET);
+        url_fseek(s->pb, c->wavpos, SEEK_SET);
         size = FFMIN(c->bytes_left, c->bpc);
-        ret = av_get_packet(&s->pb, pkt, size);
+        ret = av_get_packet(s->pb, pkt, size);
         pkt->stream_index = 1;
         if(ret != size)
             return AVERROR(EIO);
         c->bytes_left -= size;
-        c->wavpos = url_ftell(&s->pb);
+        c->wavpos = url_ftell(s->pb);
         return 0;
     }
-    url_fseek(&s->pb, c->vidpos, SEEK_SET);
-    while(!url_feof(&s->pb) && c->frames){
-        get_buffer(&s->pb, buf, 4);
+    url_fseek(s->pb, c->vidpos, SEEK_SET);
+    while(!url_feof(s->pb) && c->frames){
+        get_buffer(s->pb, buf, 4);
         switch(AV_RL32(buf)){
         case MKTAG('N', 'U', 'L', 'L'):
             if(av_new_packet(pkt, 4 + pal_size) < 0)
@@ -165,16 +165,16 @@
             if(pal_size) memcpy(pkt->data, pal, pal_size);
             memcpy(pkt->data + pal_size, buf, 4);
             c->frames--;
-            c->vidpos = url_ftell(&s->pb);
+            c->vidpos = url_ftell(s->pb);
             c->readvid = 0;
             return 0;
         case MKTAG('C', 'M', 'A', 'P'):
             pal_size = 768+4;
             memcpy(pal, buf, 4);
-            get_buffer(&s->pb, pal + 4, 768);
+            get_buffer(s->pb, pal + 4, 768);
             break;
         case MKTAG('F', 'R', 'A', 'M'):
-            get_buffer(&s->pb, buf + 4, DXA_EXTRA_SIZE - 4);
+            get_buffer(s->pb, buf + 4, DXA_EXTRA_SIZE - 4);
             size = AV_RB32(buf + 5);
             if(size > 0xFFFFFF){
                 av_log(s, AV_LOG_ERROR, "Frame size is too big: %d\n", size);
@@ -183,7 +183,7 @@
             if(av_new_packet(pkt, size + DXA_EXTRA_SIZE + pal_size) < 0)
                 return AVERROR(ENOMEM);
             memcpy(pkt->data + pal_size, buf, DXA_EXTRA_SIZE);
-            ret = get_buffer(&s->pb, pkt->data + DXA_EXTRA_SIZE + pal_size, size);
+            ret = get_buffer(s->pb, pkt->data + DXA_EXTRA_SIZE + pal_size, size);
             if(ret != size){
                 av_free_packet(pkt);
                 return AVERROR(EIO);
@@ -191,7 +191,7 @@
             if(pal_size) memcpy(pkt->data, pal, pal_size);
             pkt->stream_index = 0;
             c->frames--;
-            c->vidpos = url_ftell(&s->pb);
+            c->vidpos = url_ftell(s->pb);
             c->readvid = 0;
             return 0;
         default:
--- a/eacdata.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/eacdata.c	Wed Nov 21 07:41:00 2007 +0000
@@ -47,7 +47,7 @@
 static int cdata_read_header(AVFormatContext *s, AVFormatParameters *ap)
 {
     CdataDemuxContext *cdata = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     unsigned int sample_rate, header;
     AVStream *st;
 
@@ -83,7 +83,7 @@
     CdataDemuxContext *cdata = s->priv_data;
     int packet_size = 76*cdata->channels;
 
-    if (av_get_packet(&s->pb, pkt, packet_size) != packet_size)
+    if (av_get_packet(s->pb, pkt, packet_size) != packet_size)
         return AVERROR(EIO);
     pkt->pts = cdata->audio_pts++;
     return 1;
--- a/electronicarts.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/electronicarts.c	Wed Nov 21 07:41:00 2007 +0000
@@ -90,7 +90,7 @@
 {
     int inHeader = 1;
     EaDemuxContext *ea = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int compression_type = -1, revision = -1;
 
     ea->bytes = 2;
@@ -188,7 +188,7 @@
 static int process_audio_header_eacs(AVFormatContext *s)
 {
     EaDemuxContext *ea = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int compression_type;
 
     ea->sample_rate  = ea->big_endian ? get_be32(pb) : get_le32(pb);
@@ -220,7 +220,7 @@
 static int process_audio_header_sead(AVFormatContext *s)
 {
     EaDemuxContext *ea = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
 
     ea->sample_rate  = get_le32(pb);
     ea->bytes        = get_le32(pb);  /* 1=8-bit, 2=16-bit */
@@ -233,7 +233,7 @@
 static int process_video_header_vp6(AVFormatContext *s)
 {
     EaDemuxContext *ea = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
 
     url_fskip(pb, 16);
     ea->time_base.den = get_le32(pb);
@@ -250,7 +250,7 @@
 static int process_ea_header(AVFormatContext *s) {
     uint32_t blockid, size = 0;
     EaDemuxContext *ea = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int i;
 
     for (i=0; i<5 && (!ea->audio_codec || !ea->video_codec); i++) {
@@ -370,7 +370,7 @@
                           AVPacket *pkt)
 {
     EaDemuxContext *ea = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int ret = 0;
     int packet_read = 0;
     unsigned int chunk_type, chunk_size;
--- a/ffm.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/ffm.c	Wed Nov 21 07:41:00 2007 +0000
@@ -64,7 +64,7 @@
 {
     FFMContext *ffm = s->priv_data;
     int fill_size, h;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
 
     fill_size = ffm->packet_end - ffm->packet_ptr;
     memset(ffm->packet_ptr, 0, fill_size);
@@ -128,7 +128,7 @@
     FFMContext *ffm = s->priv_data;
     AVStream *st;
     FFMStream *fst;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVCodecContext *codec;
     int bit_rate, i;
 
@@ -278,7 +278,7 @@
 
 static int ffm_write_trailer(AVFormatContext *s)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     FFMContext *ffm = s->priv_data;
 
     /* flush packets */
@@ -314,7 +314,7 @@
         if (size <= len)
             return 1;
     }
-    pos = url_ftell(&s->pb);
+    pos = url_ftell(s->pb);
     if (pos == ffm->write_index) {
         /* exactly at the end of stream */
         return 0;
@@ -335,7 +335,7 @@
                          uint8_t *buf, int size, int first)
 {
     FFMContext *ffm = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int len, fill_size, size1, frame_offset;
 
     size1 = size;
@@ -393,7 +393,7 @@
 static void adjust_write_index(AVFormatContext *s)
 {
     FFMContext *ffm = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int64_t pts;
     //offset_t orig_write_index = ffm->write_index;
     offset_t pos_min, pos_max;
@@ -452,7 +452,7 @@
     FFMContext *ffm = s->priv_data;
     AVStream *st;
     FFMStream *fst;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVCodecContext *codec;
     int i, nb_streams;
     uint32_t tag;
@@ -585,7 +585,7 @@
         }
 #if 0
         printf("pos=%08"PRIx64" spos=%"PRIx64", write_index=%"PRIx64" size=%"PRIx64"\n",
-               url_ftell(&s->pb), s->pb.pos, ffm->write_index, ffm->file_size);
+               url_ftell(s->pb), s->pb.pos, ffm->write_index, ffm->file_size);
 #endif
         if (ffm_read_data(s, ffm->header, FRAME_HEADER_SIZE, 1) !=
             FRAME_HEADER_SIZE)
@@ -610,7 +610,7 @@
 
         av_new_packet(pkt, size);
         pkt->stream_index = ffm->header[0];
-        pkt->pos = url_ftell(&s->pb);
+        pkt->pos = url_ftell(s->pb);
         if (ffm->header[1] & FLAG_KEY_FRAME)
             pkt->flags |= PKT_FLAG_KEY;
 
@@ -638,7 +638,7 @@
 static void ffm_seek1(AVFormatContext *s, offset_t pos1)
 {
     FFMContext *ffm = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     offset_t pos;
 
     pos = pos1 + ffm->write_index;
@@ -652,7 +652,7 @@
 
 static int64_t get_pts(AVFormatContext *s, offset_t pos)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int64_t pts;
 
     ffm_seek1(s, pos);
--- a/flic.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/flic.c	Wed Nov 21 07:41:00 2007 +0000
@@ -67,7 +67,7 @@
                             AVFormatParameters *ap)
 {
     FlicDemuxContext *flic = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     unsigned char header[FLIC_HEADER_SIZE];
     AVStream *st;
     int speed;
@@ -142,7 +142,7 @@
                             AVPacket *pkt)
 {
     FlicDemuxContext *flic = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int packet_read = 0;
     unsigned int size;
     int magic;
--- a/flvdec.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/flvdec.c	Wed Nov 21 07:41:00 2007 +0000
@@ -71,7 +71,7 @@
                 vcodec->extradata_size = 1;
                 vcodec->extradata = av_malloc(1);
             }
-            vcodec->extradata[0] = get_byte(&s->pb);
+            vcodec->extradata[0] = get_byte(s->pb);
             return 1; // 1 byte body size adjustment for flv_read_packet()
         default:
             av_log(s, AV_LOG_INFO, "Unsupported video codec (%x)\n", flv_codecid);
@@ -103,7 +103,7 @@
     double num_val;
 
     num_val = 0;
-    ioc = &s->pb;
+    ioc = s->pb;
 
     amf_type = get_byte(ioc);
 
@@ -203,7 +203,7 @@
     astream = NULL;
     vstream = NULL;
     keylen = 0;
-    ioc = &s->pb;
+    ioc = s->pb;
 
     //first object needs to be "onMetaData" string
     type = get_byte(ioc);
@@ -238,8 +238,8 @@
 {
     int offset, flags;
 
-    url_fskip(&s->pb, 4);
-    flags = get_byte(&s->pb);
+    url_fskip(s->pb, 4);
+    flags = get_byte(s->pb);
     /* old flvtool cleared this field */
     /* FIXME: better fix needed */
     if (!flags) {
@@ -256,8 +256,8 @@
             return AVERROR(ENOMEM);
     }
 
-    offset = get_be32(&s->pb);
-    url_fseek(&s->pb, offset, SEEK_SET);
+    offset = get_be32(s->pb);
+    url_fseek(s->pb, offset, SEEK_SET);
 
     s->start_time = 0;
 
@@ -270,35 +270,35 @@
     AVStream *st = NULL;
 
  for(;;){
-    pos = url_ftell(&s->pb);
-    url_fskip(&s->pb, 4); /* size of previous packet */
-    type = get_byte(&s->pb);
-    size = get_be24(&s->pb);
-    pts = get_be24(&s->pb);
-    pts |= get_byte(&s->pb) << 24;
+    pos = url_ftell(s->pb);
+    url_fskip(s->pb, 4); /* size of previous packet */
+    type = get_byte(s->pb);
+    size = get_be24(s->pb);
+    pts = get_be24(s->pb);
+    pts |= get_byte(s->pb) << 24;
 //    av_log(s, AV_LOG_DEBUG, "type:%d, size:%d, pts:%d\n", type, size, pts);
-    if (url_feof(&s->pb))
+    if (url_feof(s->pb))
         return AVERROR(EIO);
-    url_fskip(&s->pb, 3); /* stream id, always 0 */
+    url_fskip(s->pb, 3); /* stream id, always 0 */
     flags = 0;
 
     if(size == 0)
         continue;
 
-    next= size + url_ftell(&s->pb);
+    next= size + url_ftell(s->pb);
 
     if (type == FLV_TAG_TYPE_AUDIO) {
         is_audio=1;
-        flags = get_byte(&s->pb);
+        flags = get_byte(s->pb);
     } else if (type == FLV_TAG_TYPE_VIDEO) {
         is_audio=0;
-        flags = get_byte(&s->pb);
+        flags = get_byte(s->pb);
     } else {
         if (type == FLV_TAG_TYPE_META && size > 13+1+4)
             flv_read_metabody(s, next);
         else /* skip packet */
             av_log(s, AV_LOG_ERROR, "skipping flv packet: type %d, size %d, flags %d\n", type, size, flags);
-        url_fseek(&s->pb, next, SEEK_SET);
+        url_fseek(s->pb, next, SEEK_SET);
         continue;
     }
 
@@ -317,7 +317,7 @@
        ||(st->discard >= AVDISCARD_BIDIR  &&  ((flags & FLV_VIDEO_FRAMETYPE_MASK) == FLV_FRAME_DISP_INTER && !is_audio))
        || st->discard >= AVDISCARD_ALL
        ){
-        url_fseek(&s->pb, next, SEEK_SET);
+        url_fseek(s->pb, next, SEEK_SET);
         continue;
     }
     if ((flags & FLV_VIDEO_FRAMETYPE_MASK) == FLV_FRAME_KEY)
@@ -326,17 +326,17 @@
  }
 
     // if not streamed and no duration from metadata then seek to end to find the duration from the timestamps
-    if(!url_is_streamed(&s->pb) && s->duration==AV_NOPTS_VALUE){
+    if(!url_is_streamed(s->pb) && s->duration==AV_NOPTS_VALUE){
         int size;
-        const int pos= url_ftell(&s->pb);
-        const int fsize= url_fsize(&s->pb);
-        url_fseek(&s->pb, fsize-4, SEEK_SET);
-        size= get_be32(&s->pb);
-        url_fseek(&s->pb, fsize-3-size, SEEK_SET);
-        if(size == get_be24(&s->pb) + 11){
-            s->duration= get_be24(&s->pb) * (int64_t)AV_TIME_BASE / 1000;
+        const int pos= url_ftell(s->pb);
+        const int fsize= url_fsize(s->pb);
+        url_fseek(s->pb, fsize-4, SEEK_SET);
+        size= get_be32(s->pb);
+        url_fseek(s->pb, fsize-3-size, SEEK_SET);
+        if(size == get_be24(s->pb) + 11){
+            s->duration= get_be24(s->pb) * (int64_t)AV_TIME_BASE / 1000;
         }
-        url_fseek(&s->pb, pos, SEEK_SET);
+        url_fseek(s->pb, pos, SEEK_SET);
     }
 
     if(is_audio){
@@ -353,7 +353,7 @@
         size -= flv_set_video_codec(s, st, flags & FLV_VIDEO_CODECID_MASK);
     }
 
-    ret= av_get_packet(&s->pb, pkt, size - 1);
+    ret= av_get_packet(s->pb, pkt, size - 1);
     if (ret <= 0) {
         return AVERROR(EIO);
     }
@@ -380,7 +380,7 @@
     int index = av_index_search_timestamp(st, timestamp, flags);
     if (index < 0)
         return -1;
-    url_fseek(&s->pb, st->index_entries[index].pos, SEEK_SET);
+    url_fseek(s->pb, st->index_entries[index].pos, SEEK_SET);
 
     return 0;
 }
--- a/flvenc.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/flvenc.c	Wed Nov 21 07:41:00 2007 +0000
@@ -126,7 +126,7 @@
 
 static int flv_write_header(AVFormatContext *s)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     FLVContext *flv = s->priv_data;
     int i, width, height, samplerate, samplesize, channels, audiocodecid, videocodecid;
     double framerate = 0.0;
@@ -256,7 +256,7 @@
 {
     int64_t file_size;
 
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     FLVContext *flv = s->priv_data;
 
     file_size = url_ftell(pb);
@@ -273,7 +273,7 @@
 
 static int flv_write_packet(AVFormatContext *s, AVPacket *pkt)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVCodecContext *enc = s->streams[pkt->stream_index]->codec;
     FLVContext *flv = s->priv_data;
     int size= pkt->size;
--- a/framecrcenc.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/framecrcenc.c	Wed Nov 21 07:41:00 2007 +0000
@@ -27,8 +27,8 @@
     char buf[256];
 
     snprintf(buf, sizeof(buf), "%d, %"PRId64", %d, 0x%08x\n", pkt->stream_index, pkt->dts, pkt->size, crc);
-    put_buffer(&s->pb, buf, strlen(buf));
-    put_flush_packet(&s->pb);
+    put_buffer(s->pb, buf, strlen(buf));
+    put_flush_packet(s->pb);
     return 0;
 }
 
--- a/gif.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/gif.c	Wed Nov 21 07:41:00 2007 +0000
@@ -313,7 +313,7 @@
 static int gif_write_header(AVFormatContext *s)
 {
     GIFContext *gif = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVCodecContext *enc, *video_enc;
     int i, width, height, loop_count /*, rate*/;
 
@@ -348,14 +348,14 @@
 
     gif_image_write_header(pb, width, height, loop_count, NULL);
 
-    put_flush_packet(&s->pb);
+    put_flush_packet(s->pb);
     return 0;
 }
 
 static int gif_write_video(AVFormatContext *s,
                            AVCodecContext *enc, const uint8_t *buf, int size)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     GIFContext *gif = s->priv_data;
     int jiffies;
     int64_t delay;
@@ -383,7 +383,7 @@
     gif_image_write_image(pb, 0, 0, enc->width, enc->height,
                           buf, enc->width * 3, PIX_FMT_RGB24);
 
-    put_flush_packet(&s->pb);
+    put_flush_packet(s->pb);
     return 0;
 }
 
@@ -398,10 +398,10 @@
 
 static int gif_write_trailer(AVFormatContext *s)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
 
     put_byte(pb, 0x3b);
-    put_flush_packet(&s->pb);
+    put_flush_packet(s->pb);
     return 0;
 }
 
--- a/gifdec.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/gifdec.c	Wed Nov 21 07:41:00 2007 +0000
@@ -526,7 +526,7 @@
                            AVFormatParameters * ap)
 {
     GifState *s = s1->priv_data;
-    ByteIOContext *f = &s1->pb;
+    ByteIOContext *f = s1->pb;
     AVStream *st;
 
     s->f = f;
--- a/gxf.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/gxf.c	Wed Nov 21 07:41:00 2007 +0000
@@ -228,7 +228,7 @@
  * \brief read index from FLT packet into stream 0 av_index
  */
 static void gxf_read_index(AVFormatContext *s, int pkt_len) {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVStream *st = s->streams[0];
     uint32_t fields_per_map = get_le32(pb);
     uint32_t map_cnt = get_le32(pb);
@@ -252,7 +252,7 @@
 }
 
 static int gxf_header(AVFormatContext *s, AVFormatParameters *ap) {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     pkt_type_t pkt_type;
     int map_len;
     int len;
@@ -378,7 +378,7 @@
     int cur_track;
     int64_t cur_timestamp = AV_NOPTS_VALUE;
     int len;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     pkt_type_t type;
     tmp = get_be32(pb);
 start:
@@ -408,7 +408,7 @@
 }
 
 static int gxf_packet(AVFormatContext *s, AVPacket *pkt) {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     pkt_type_t pkt_type;
     int pkt_len;
     while (!url_feof(pb)) {
@@ -466,7 +466,7 @@
     if (idx < st->nb_index_entries - 2)
         maxlen = st->index_entries[idx + 2].pos - pos;
     maxlen = FFMAX(maxlen, 200 * 1024);
-    url_fseek(&s->pb, pos, SEEK_SET);
+    url_fseek(s->pb, pos, SEEK_SET);
     found = gxf_resync_media(s, maxlen, -1, timestamp);
     if (FFABS(found - timestamp) > 4)
         return -1;
@@ -475,7 +475,7 @@
 
 static int64_t gxf_read_timestamp(AVFormatContext *s, int stream_index,
                                   int64_t *pos, int64_t pos_limit) {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int64_t res;
     url_fseek(pb, *pos, SEEK_SET);
     res = gxf_resync_media(s, pos_limit - *pos, -1, -1);
--- a/gxfenc.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/gxfenc.c	Wed Nov 21 07:41:00 2007 +0000
@@ -576,7 +576,7 @@
 
 static int gxf_write_header(AVFormatContext *s)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     GXFContext *gxf = s->priv_data;
     int i;
 
@@ -671,7 +671,7 @@
 
 static int gxf_write_trailer(AVFormatContext *s)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     GXFContext *gxf = s->priv_data;
     offset_t end;
     int i;
@@ -763,8 +763,8 @@
 {
     GXFContext *gxf = s->priv_data;
 
-    gxf_write_media_packet(&s->pb, gxf, pkt);
-    put_flush_packet(&s->pb);
+    gxf_write_media_packet(s->pb, gxf, pkt);
+    put_flush_packet(s->pb);
     return 0;
 }
 
--- a/idcin.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/idcin.c	Wed Nov 21 07:41:00 2007 +0000
@@ -136,7 +136,7 @@
 static int idcin_read_header(AVFormatContext *s,
                              AVFormatParameters *ap)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     IdcinDemuxContext *idcin = s->priv_data;
     AVStream *st;
     unsigned int width, height;
@@ -215,13 +215,13 @@
     unsigned int command;
     unsigned int chunk_size;
     IdcinDemuxContext *idcin = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int i;
     int palette_scale;
     unsigned char r, g, b;
     unsigned char palette_buffer[768];
 
-    if (url_feof(&s->pb))
+    if (url_feof(s->pb))
         return AVERROR(EIO);
 
     if (idcin->next_chunk_is_video) {
--- a/idroq.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/idroq.c	Wed Nov 21 07:41:00 2007 +0000
@@ -69,7 +69,7 @@
                            AVFormatParameters *ap)
 {
     RoqDemuxContext *roq = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVStream *st;
     unsigned char preamble[RoQ_CHUNK_PREAMBLE_SIZE];
     int i;
@@ -174,7 +174,7 @@
                            AVPacket *pkt)
 {
     RoqDemuxContext *roq = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int ret = 0;
     unsigned int chunk_size;
     unsigned int chunk_type;
@@ -185,7 +185,7 @@
 
     while (!packet_read) {
 
-        if (url_feof(&s->pb))
+        if (url_feof(s->pb))
             return AVERROR(EIO);
 
         /* get the next chunk preamble */
--- a/img2.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/img2.c	Wed Nov 21 07:41:00 2007 +0000
@@ -239,7 +239,7 @@
     char filename[1024];
     int i;
     int size[3]={0}, ret[3]={0};
-    ByteIOContext f1[3], *f[3]= {&f1[0], &f1[1], &f1[2]};
+    ByteIOContext *f[3];
     AVCodecContext *codec= s1->streams[0]->codec;
 
     if (!s->is_pipe) {
@@ -251,7 +251,7 @@
                                   s->path, s->img_number)<0 && s->img_number > 1)
             return AVERROR(EIO);
         for(i=0; i<3; i++){
-            if (url_fopen(f[i], filename, URL_RDONLY) < 0)
+            if (url_fopen(&f[i], filename, URL_RDONLY) < 0)
                 return AVERROR(EIO);
             size[i]= url_fsize(f[i]);
 
@@ -263,7 +263,7 @@
         if(codec->codec_id == CODEC_ID_RAWVIDEO && !codec->width)
             infer_size(&codec->width, &codec->height, size[0]);
     } else {
-        f[0] = &s1->pb;
+        f[0] = s1->pb;
         if (url_feof(f[0]))
             return AVERROR(EIO);
         size[0]= 4096;
@@ -322,7 +322,7 @@
 static int img_write_packet(AVFormatContext *s, AVPacket *pkt)
 {
     VideoData *img = s->priv_data;
-    ByteIOContext pb1[3], *pb[3]= {&pb1[0], &pb1[1], &pb1[2]};
+    ByteIOContext *pb[3];
     char filename[1024];
     AVCodecContext *codec= s->streams[ pkt->stream_index ]->codec;
     int i;
@@ -332,7 +332,7 @@
                                   img->path, img->img_number) < 0 && img->img_number>1)
             return AVERROR(EIO);
         for(i=0; i<3; i++){
-            if (url_fopen(pb[i], filename, URL_WRONLY) < 0)
+            if (url_fopen(&pb[i], filename, URL_WRONLY) < 0)
                 return AVERROR(EIO);
 
             if(codec->codec_id != CODEC_ID_RAWVIDEO)
@@ -340,7 +340,7 @@
             filename[ strlen(filename) - 1 ]= 'U' + i;
         }
     } else {
-        pb[0] = &s->pb;
+        pb[0] = s->pb;
     }
 
     if(codec->codec_id == CODEC_ID_RAWVIDEO){
--- a/ipmovie.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/ipmovie.c	Wed Nov 21 07:41:00 2007 +0000
@@ -517,7 +517,7 @@
                                AVFormatParameters *ap)
 {
     IPMVEContext *ipmovie = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVPacket pkt;
     AVStream *st;
     unsigned char chunk_preamble[CHUNK_PREAMBLE_SIZE];
@@ -589,7 +589,7 @@
                                AVPacket *pkt)
 {
     IPMVEContext *ipmovie = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int ret;
 
     ret = process_ipmovie_chunk(ipmovie, pb, pkt);
--- a/libnut.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/libnut.c	Wed Nov 21 07:41:00 2007 +0000
@@ -54,7 +54,7 @@
 
 static int nut_write_header(AVFormatContext * avf) {
     NUTContext * priv = avf->priv_data;
-    ByteIOContext * bc = &avf->pb;
+    ByteIOContext * bc = avf->pb;
     nut_muxer_opts_t mopts = {
         .output = {
             .priv = bc,
@@ -137,7 +137,7 @@
 }
 
 static int nut_write_trailer(AVFormatContext * avf) {
-    ByteIOContext * bc = &avf->pb;
+    ByteIOContext * bc = avf->pb;
     NUTContext * priv = avf->priv_data;
     int i;
 
@@ -187,7 +187,7 @@
 
 static int nut_read_header(AVFormatContext * avf, AVFormatParameters * ap) {
     NUTContext * priv = avf->priv_data;
-    ByteIOContext * bc = &avf->pb;
+    ByteIOContext * bc = avf->pb;
     nut_demuxer_opts_t dopts = {
         .input = {
             .priv = bc,
@@ -272,7 +272,7 @@
     if (pd.flags & NUT_FLAG_KEY) pkt->flags |= PKT_FLAG_KEY;
     pkt->pts = pd.pts;
     pkt->stream_index = pd.stream;
-    pkt->pos = url_ftell(&avf->pb);
+    pkt->pos = url_ftell(avf->pb);
 
     ret = nut_read_frame(priv->nut, &pd.len, pkt->data);
 
--- a/matroskadec.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/matroskadec.c	Wed Nov 21 07:41:00 2007 +0000
@@ -176,7 +176,7 @@
 static int
 ebml_read_element_level_up (MatroskaDemuxContext *matroska)
 {
-    ByteIOContext *pb = &matroska->ctx->pb;
+    ByteIOContext *pb = matroska->ctx->pb;
     offset_t pos = url_ftell(pb);
     int num = 0;
 
@@ -208,7 +208,7 @@
                int                   max_size,
                uint64_t             *number)
 {
-    ByteIOContext *pb = &matroska->ctx->pb;
+    ByteIOContext *pb = matroska->ctx->pb;
     int len_mask = 0x80, read = 1, n = 1;
     int64_t total = 0;
 
@@ -325,7 +325,7 @@
 ebml_read_seek (MatroskaDemuxContext *matroska,
                 offset_t              offset)
 {
-    ByteIOContext *pb = &matroska->ctx->pb;
+    ByteIOContext *pb = matroska->ctx->pb;
 
     /* clear ID cache, if any */
     matroska->peek_id = 0;
@@ -341,7 +341,7 @@
 static int
 ebml_read_skip (MatroskaDemuxContext *matroska)
 {
-    ByteIOContext *pb = &matroska->ctx->pb;
+    ByteIOContext *pb = matroska->ctx->pb;
     uint32_t id;
     uint64_t length;
     int res;
@@ -365,7 +365,7 @@
                 uint32_t             *id,
                 uint64_t             *num)
 {
-    ByteIOContext *pb = &matroska->ctx->pb;
+    ByteIOContext *pb = matroska->ctx->pb;
     int n = 0, size, res;
     uint64_t rlength;
 
@@ -399,7 +399,7 @@
                 uint32_t             *id,
                 int64_t              *num)
 {
-    ByteIOContext *pb = &matroska->ctx->pb;
+    ByteIOContext *pb = matroska->ctx->pb;
     int size, n = 1, negative = 0, res;
     uint64_t rlength;
 
@@ -438,7 +438,7 @@
                  uint32_t             *id,
                  double               *num)
 {
-    ByteIOContext *pb = &matroska->ctx->pb;
+    ByteIOContext *pb = matroska->ctx->pb;
     int size, res;
     uint64_t rlength;
 
@@ -472,7 +472,7 @@
                  uint32_t             *id,
                  char                **str)
 {
-    ByteIOContext *pb = &matroska->ctx->pb;
+    ByteIOContext *pb = matroska->ctx->pb;
     int size, res;
     uint64_t rlength;
 
@@ -534,7 +534,7 @@
 ebml_read_master (MatroskaDemuxContext *matroska,
                   uint32_t             *id)
 {
-    ByteIOContext *pb = &matroska->ctx->pb;
+    ByteIOContext *pb = matroska->ctx->pb;
     uint64_t length;
     MatroskaLevel *level;
     int res;
@@ -569,7 +569,7 @@
                   uint8_t             **binary,
                   int                  *size)
 {
-    ByteIOContext *pb = &matroska->ctx->pb;
+    ByteIOContext *pb = matroska->ctx->pb;
     uint64_t rlength;
     int res;
 
@@ -1748,7 +1748,7 @@
 
                         /* remember the peeked ID and the current position */
                         peek_id_cache = matroska->peek_id;
-                        before_pos = url_ftell(&matroska->ctx->pb);
+                        before_pos = url_ftell(matroska->ctx->pb);
 
                         /* seek */
                         if ((res = ebml_read_seek(matroska, seek_pos +
@@ -1788,14 +1788,14 @@
                         switch (id) {
                             case MATROSKA_ID_CUES:
                                 if (!(res = matroska_parse_index(matroska)) ||
-                                    url_feof(&matroska->ctx->pb)) {
+                                    url_feof(matroska->ctx->pb)) {
                                     matroska->index_parsed = 1;
                                     res = 0;
                                 }
                                 break;
                             case MATROSKA_ID_TAGS:
                                 if (!(res = matroska_parse_metadata(matroska)) ||
-                                   url_feof(&matroska->ctx->pb)) {
+                                   url_feof(matroska->ctx->pb)) {
                                     matroska->metadata_parsed = 1;
                                     res = 0;
                                 }
@@ -1931,7 +1931,7 @@
      * after the segment ID/length. */
     if ((res = ebml_read_master(matroska, &id)) < 0)
         return res;
-    matroska->segment_start = url_ftell(&s->pb);
+    matroska->segment_start = url_ftell(s->pb);
 
     matroska->time_scale = 1000000;
     /* we've found our segment, start reading the different contents in here */
@@ -2485,7 +2485,7 @@
              * of the harder things, so this code is a bit complicated.
              * See http://www.matroska.org/ for documentation. */
             case MATROSKA_ID_BLOCK: {
-                pos = url_ftell(&matroska->ctx->pb);
+                pos = url_ftell(matroska->ctx->pb);
                 res = ebml_read_binary(matroska, &id, &data, &size);
                 break;
             }
@@ -2547,7 +2547,7 @@
     int size;
 
     av_log(matroska->ctx, AV_LOG_DEBUG,
-           "parsing cluster at %"PRId64"\n", url_ftell(&matroska->ctx->pb));
+           "parsing cluster at %"PRId64"\n", url_ftell(matroska->ctx->pb));
 
     while (res == 0) {
         if (!(id = ebml_peek_id(matroska, &matroska->level_up))) {
@@ -2576,7 +2576,7 @@
                 break;
 
             case MATROSKA_ID_SIMPLEBLOCK:
-                pos = url_ftell(&matroska->ctx->pb);
+                pos = url_ftell(matroska->ctx->pb);
                 res = ebml_read_binary(matroska, &id, &data, &size);
                 if (res == 0)
                     res = matroska_parse_block(matroska, data, size, pos,
@@ -2668,7 +2668,7 @@
         return 0;
 
     /* do the seek */
-    url_fseek(&s->pb, st->index_entries[index].pos, SEEK_SET);
+    url_fseek(s->pb, st->index_entries[index].pos, SEEK_SET);
     matroska->skip_to_keyframe = !(flags & AVSEEK_FLAG_ANY);
     matroska->skip_to_stream = st;
     matroska->num_packets = 0;
--- a/matroskaenc.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/matroskaenc.c	Wed Nov 21 07:41:00 2007 +0000
@@ -466,19 +466,21 @@
 
 static int mkv_write_codecprivate(AVFormatContext *s, ByteIOContext *pb, AVCodecContext *codec, int native_id)
 {
-    ByteIOContext dyn_cp;
+    ByteIOContext *dyn_cp;
     uint8_t *codecpriv;
-    int ret = 0, codecpriv_size;
+    int ret, codecpriv_size;
 
-    url_open_dyn_buf(&dyn_cp);
+    ret = url_open_dyn_buf(&dyn_cp);
+    if(ret < 0)
+        return ret;
 
     if (native_id) {
         if (codec->codec_id == CODEC_ID_VORBIS || codec->codec_id == CODEC_ID_THEORA)
-            ret = put_xiph_codecpriv(s, &dyn_cp, codec);
+            ret = put_xiph_codecpriv(s, dyn_cp, codec);
         else if (codec->codec_id == CODEC_ID_FLAC)
-            ret = put_flac_codecpriv(s, &dyn_cp, codec);
+            ret = put_flac_codecpriv(s, dyn_cp, codec);
         else if (codec->extradata_size)
-            put_buffer(&dyn_cp, codec->extradata, codec->extradata_size);
+            put_buffer(dyn_cp, codec->extradata, codec->extradata_size);
     } else if (codec->codec_type == CODEC_TYPE_VIDEO) {
         if (!codec->codec_tag)
             codec->codec_tag = codec_get_tag(codec_bmp_tags, codec->codec_id);
@@ -487,7 +489,7 @@
             ret = -1;
         }
 
-        put_bmp_header(&dyn_cp, codec, codec_bmp_tags, 0);
+        put_bmp_header(dyn_cp, codec, codec_bmp_tags, 0);
 
     } else if (codec->codec_type == CODEC_TYPE_AUDIO) {
         if (!codec->codec_tag)
@@ -497,10 +499,10 @@
             ret = -1;
         }
 
-        put_wav_header(&dyn_cp, codec);
+        put_wav_header(dyn_cp, codec);
     }
 
-    codecpriv_size = url_close_dyn_buf(&dyn_cp, &codecpriv);
+    codecpriv_size = url_close_dyn_buf(dyn_cp, &codecpriv);
     if (codecpriv_size)
         put_ebml_binary(pb, MATROSKA_ID_CODECPRIVATE, codecpriv, codecpriv_size);
     av_free(codecpriv);
@@ -510,7 +512,7 @@
 static int mkv_write_tracks(AVFormatContext *s)
 {
     MatroskaMuxContext *mkv = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     ebml_master tracks;
     int i, j, ret;
 
@@ -613,7 +615,7 @@
 static int mkv_write_header(AVFormatContext *s)
 {
     MatroskaMuxContext *mkv = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     ebml_master ebml_header, segment_info;
     int ret;
 
@@ -703,7 +705,7 @@
 static void mkv_write_block(AVFormatContext *s, unsigned int blockid, AVPacket *pkt, int flags)
 {
     MatroskaMuxContext *mkv = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
 
     av_log(s, AV_LOG_DEBUG, "Writing block at offset %" PRIu64 ", size %d, "
            "pts %" PRId64 ", dts %" PRId64 ", duration %d, flags %d\n",
@@ -719,7 +721,7 @@
 static int mkv_write_packet(AVFormatContext *s, AVPacket *pkt)
 {
     MatroskaMuxContext *mkv = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVCodecContext *codec = s->streams[pkt->stream_index]->codec;
     int keyframe = !!(pkt->flags & PKT_FLAG_KEY);
     int ret;
@@ -761,7 +763,7 @@
 static int mkv_write_trailer(AVFormatContext *s)
 {
     MatroskaMuxContext *mkv = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     offset_t currentpos, second_seekhead, cuespos;
     int ret;
 
--- a/mm.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/mm.c	Wed Nov 21 07:41:00 2007 +0000
@@ -72,7 +72,7 @@
                            AVFormatParameters *ap)
 {
     MmDemuxContext *mm = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVStream *st;
 
     unsigned int type, length;
@@ -127,7 +127,7 @@
                            AVPacket *pkt)
 {
     MmDemuxContext *mm = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     unsigned char preamble[MM_PREAMBLE_SIZE];
     unsigned char pal[MM_PALETTE_SIZE];
     unsigned int type, length;
@@ -178,7 +178,7 @@
             return 0;
 
         case MM_TYPE_AUDIO :
-            if (av_get_packet(&s->pb, pkt, length)<0)
+            if (av_get_packet(s->pb, pkt, length)<0)
                 return AVERROR(ENOMEM);
             pkt->size = length;
             pkt->stream_index = 1;
--- a/mmf.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/mmf.c	Wed Nov 21 07:41:00 2007 +0000
@@ -60,7 +60,7 @@
 static int mmf_write_header(AVFormatContext *s)
 {
     MMFContext *mmf = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     offset_t pos;
     int rate;
 
@@ -108,7 +108,7 @@
 
 static int mmf_write_packet(AVFormatContext *s, AVPacket *pkt)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     put_buffer(pb, pkt->data, pkt->size);
     return 0;
 }
@@ -127,12 +127,12 @@
 
 static int mmf_write_trailer(AVFormatContext *s)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     MMFContext *mmf = s->priv_data;
     offset_t pos, size;
     int gatetime;
 
-    if (!url_is_streamed(&s->pb)) {
+    if (!url_is_streamed(s->pb)) {
         /* Fill in length fields */
         end_tag_be(pb, mmf->awapos);
         end_tag_be(pb, mmf->atrpos);
@@ -183,7 +183,7 @@
 {
     MMFContext *mmf = s->priv_data;
     unsigned int tag;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVStream *st;
     offset_t file_size, size;
     int rate, params;
@@ -265,7 +265,7 @@
     AVStream *st;
     int ret, size;
 
-    if (url_feof(&s->pb))
+    if (url_feof(s->pb))
         return AVERROR(EIO);
     st = s->streams[0];
 
@@ -280,7 +280,7 @@
         return AVERROR(EIO);
     pkt->stream_index = 0;
 
-    ret = get_buffer(&s->pb, pkt->data, pkt->size);
+    ret = get_buffer(s->pb, pkt->data, pkt->size);
     if (ret < 0)
         av_free_packet(pkt);
 
--- a/mov.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/mov.c	Wed Nov 21 07:41:00 2007 +0000
@@ -1423,7 +1423,7 @@
 static int mov_read_header(AVFormatContext *s, AVFormatParameters *ap)
 {
     MOVContext *mov = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int i, err;
     MOV_atom_t atom = { 0, 0, 0 };
 
@@ -1516,7 +1516,7 @@
         return -1;
     /* must be done just before reading, to avoid infinite loop on sample */
     sc->current_sample++;
-    if (sample->pos >= url_fsize(&s->pb)) {
+    if (sample->pos >= url_fsize(s->pb)) {
         av_log(mov->fc, AV_LOG_ERROR, "stream %d, offset 0x%"PRIx64": partial file\n", sc->ffindex, sample->pos);
         return -1;
     }
@@ -1526,8 +1526,8 @@
         dprintf(s, "dv audio pkt size %d\n", pkt->size);
     } else {
 #endif
-        url_fseek(&s->pb, sample->pos, SEEK_SET);
-        av_get_packet(&s->pb, pkt, sample->size);
+        url_fseek(s->pb, sample->pos, SEEK_SET);
+        av_get_packet(s->pb, pkt, sample->size);
 #ifdef CONFIG_DV_DEMUXER
         if (mov->dv_demux) {
             void *pkt_destruct_func = pkt->destruct;
--- a/movenc.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/movenc.c	Wed Nov 21 07:41:00 2007 +0000
@@ -442,24 +442,27 @@
     return end + 3;
 }
 
-static void avc_parse_nal_units(uint8_t **buf, int *size)
+static int avc_parse_nal_units(uint8_t **buf, int *size)
 {
-    ByteIOContext pb;
+    ByteIOContext *pb;
     uint8_t *p = *buf;
     uint8_t *end = p + *size;
     uint8_t *nal_start, *nal_end;
+    int ret = url_open_dyn_buf(&pb);
+    if(ret < 0)
+        return ret;
 
-    url_open_dyn_buf(&pb);
     nal_start = avc_find_startcode(p, end);
     while (nal_start < end) {
         while(!*(nal_start++));
         nal_end = avc_find_startcode(nal_start, end);
-        put_be32(&pb, nal_end - nal_start);
-        put_buffer(&pb, nal_start, nal_end - nal_start);
+        put_be32(pb, nal_end - nal_start);
+        put_buffer(pb, nal_start, nal_end - nal_start);
         nal_start = nal_end;
     }
     av_freep(buf);
-    *size = url_close_dyn_buf(&pb, buf);
+    *size = url_close_dyn_buf(pb, buf);
+    return 0;
 }
 
 static int mov_write_avcc_tag(ByteIOContext *pb, MOVTrack *track)
@@ -1508,11 +1511,11 @@
 
 static int mov_write_header(AVFormatContext *s)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     MOVContext *mov = s->priv_data;
     int i;
 
-    if (url_is_streamed(&s->pb)) {
+    if (url_is_streamed(s->pb)) {
         av_log(s, AV_LOG_ERROR, "muxer does not support non seekable output\n");
         return -1;
     }
@@ -1579,13 +1582,13 @@
 static int mov_write_packet(AVFormatContext *s, AVPacket *pkt)
 {
     MOVContext *mov = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     MOVTrack *trk = &mov->tracks[pkt->stream_index];
     AVCodecContext *enc = trk->enc;
     unsigned int samplesInChunk = 0;
     int size= pkt->size;
 
-    if (url_is_streamed(&s->pb)) return 0; /* Can't handle that */
+    if (url_is_streamed(s->pb)) return 0; /* Can't handle that */
     if (!size) return 0; /* Discard 0 sized packets */
 
     if (enc->codec_id == CODEC_ID_AMR_NB) {
@@ -1663,7 +1666,7 @@
 static int mov_write_trailer(AVFormatContext *s)
 {
     MOVContext *mov = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int res = 0;
     int i;
 
--- a/mp3.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/mp3.c	Wed Nov 21 07:41:00 2007 +0000
@@ -190,20 +190,20 @@
     taglen--; /* account for encoding type byte */
     dstlen--; /* Leave space for zero terminator */
 
-    switch(get_byte(&s->pb)) { /* encoding type */
+    switch(get_byte(s->pb)) { /* encoding type */
 
     case 0:  /* ISO-8859-1 (0 - 255 maps directly into unicode) */
         q = dst;
         while(taglen--) {
             uint8_t tmp;
-            PUT_UTF8(get_byte(&s->pb), tmp, if (q - dst < dstlen - 1) *q++ = tmp;)
+            PUT_UTF8(get_byte(s->pb), tmp, if (q - dst < dstlen - 1) *q++ = tmp;)
         }
         *q = '\0';
         break;
 
     case 3:  /* UTF-8 */
         len = FFMIN(taglen, dstlen);
-        get_buffer(&s->pb, dst, len);
+        get_buffer(s->pb, dst, len);
         dst[len] = 0;
         break;
     }
@@ -252,23 +252,23 @@
     }
 
     if(isv34 && flags & 0x40) /* Extended header present, just skip over it */
-        url_fskip(&s->pb, id3v2_get_size(&s->pb, 4));
+        url_fskip(s->pb, id3v2_get_size(s->pb, 4));
 
     while(len >= taghdrlen) {
         if(isv34) {
-            tag  = get_be32(&s->pb);
-            tlen = id3v2_get_size(&s->pb, 4);
-            get_be16(&s->pb); /* flags */
+            tag  = get_be32(s->pb);
+            tlen = id3v2_get_size(s->pb, 4);
+            get_be16(s->pb); /* flags */
         } else {
-            tag  = get_be24(&s->pb);
-            tlen = id3v2_get_size(&s->pb, 3);
+            tag  = get_be24(s->pb);
+            tlen = id3v2_get_size(s->pb, 3);
         }
         len -= taghdrlen + tlen;
 
         if(len < 0)
             break;
 
-        next = url_ftell(&s->pb) + tlen;
+        next = url_ftell(s->pb) + tlen;
 
         switch(tag) {
         case MKBETAG('T', 'I', 'T', '2'):
@@ -298,21 +298,21 @@
             break;
         case 0:
             /* padding, skip to end */
-            url_fskip(&s->pb, len);
+            url_fskip(s->pb, len);
             len = 0;
             continue;
         }
         /* Skip to end of tag */
-        url_fseek(&s->pb, next, SEEK_SET);
+        url_fseek(s->pb, next, SEEK_SET);
     }
 
     if(version == 4 && flags & 0x10) /* Footer preset, always 10 bytes, skip over it */
-        url_fskip(&s->pb, 10);
+        url_fskip(s->pb, 10);
     return;
 
   error:
     av_log(s, AV_LOG_INFO, "ID3v2.%d tag skipped, cannot handle %s\n", version, reason);
-    url_fskip(&s->pb, len);
+    url_fskip(s->pb, len);
 }
 
 static void id3v1_get_string(char *str, int str_size,
@@ -435,7 +435,7 @@
     const offset_t xing_offtbl[2][2] = {{32, 17}, {17,9}};
     MPADecodeContext c;
 
-    v = get_be32(&s->pb);
+    v = get_be32(s->pb);
     if(ff_mpa_check_header(v) < 0)
       return;
 
@@ -444,23 +444,23 @@
         return;
 
     /* Check for Xing / Info tag */
-    url_fseek(&s->pb, xing_offtbl[c.lsf == 1][c.nb_channels == 1], SEEK_CUR);
-    v = get_be32(&s->pb);
+    url_fseek(s->pb, xing_offtbl[c.lsf == 1][c.nb_channels == 1], SEEK_CUR);
+    v = get_be32(s->pb);
     if(v == MKBETAG('X', 'i', 'n', 'g') || v == MKBETAG('I', 'n', 'f', 'o')) {
-        v = get_be32(&s->pb);
+        v = get_be32(s->pb);
         if(v & 0x1)
-            frames = get_be32(&s->pb);
+            frames = get_be32(s->pb);
     }
 
     /* Check for VBRI tag (always 32 bytes after end of mpegaudio header) */
-    url_fseek(&s->pb, base + 4 + 32, SEEK_SET);
-    v = get_be32(&s->pb);
+    url_fseek(s->pb, base + 4 + 32, SEEK_SET);
+    v = get_be32(s->pb);
     if(v == MKBETAG('V', 'B', 'R', 'I')) {
         /* Check tag version */
-        if(get_be16(&s->pb) == 1) {
+        if(get_be16(s->pb) == 1) {
             /* skip delay, quality and total bytes */
-            url_fseek(&s->pb, 8, SEEK_CUR);
-            frames = get_be32(&s->pb);
+            url_fseek(s->pb, 8, SEEK_CUR);
+            frames = get_be32(s->pb);
         }
     }
 
@@ -490,21 +490,21 @@
     st->start_time = 0;
 
     /* try to get the TAG */
-    if (!url_is_streamed(&s->pb)) {
+    if (!url_is_streamed(s->pb)) {
         /* XXX: change that */
-        filesize = url_fsize(&s->pb);
+        filesize = url_fsize(s->pb);
         if (filesize > 128) {
-            url_fseek(&s->pb, filesize - 128, SEEK_SET);
-            ret = get_buffer(&s->pb, buf, ID3v1_TAG_SIZE);
+            url_fseek(s->pb, filesize - 128, SEEK_SET);
+            ret = get_buffer(s->pb, buf, ID3v1_TAG_SIZE);
             if (ret == ID3v1_TAG_SIZE) {
                 id3v1_parse_tag(s, buf);
             }
-            url_fseek(&s->pb, 0, SEEK_SET);
+            url_fseek(s->pb, 0, SEEK_SET);
         }
     }
 
     /* if ID3v2 header found, skip it */
-    ret = get_buffer(&s->pb, buf, ID3v2_HEADER_SIZE);
+    ret = get_buffer(s->pb, buf, ID3v2_HEADER_SIZE);
     if (ret != ID3v2_HEADER_SIZE)
         return -1;
     if (id3v2_match(buf)) {
@@ -515,12 +515,12 @@
             (buf[9] & 0x7f);
         id3v2_parse(s, len, buf[3], buf[5]);
     } else {
-        url_fseek(&s->pb, 0, SEEK_SET);
+        url_fseek(s->pb, 0, SEEK_SET);
     }
 
-    off = url_ftell(&s->pb);
+    off = url_ftell(s->pb);
     mp3_parse_vbr_tags(s, st, off);
-    url_fseek(&s->pb, off, SEEK_SET);
+    url_fseek(s->pb, off, SEEK_SET);
 
     /* the parameters will be extracted from the compressed bitstream */
     return 0;
@@ -535,7 +535,7 @@
 
     size= MP3_PACKET_SIZE;
 
-    ret= av_get_packet(&s->pb, pkt, size);
+    ret= av_get_packet(s->pb, pkt, size);
 
     pkt->stream_index = 0;
     if (ret <= 0) {
@@ -557,20 +557,20 @@
 
 static void id3v2_put_size(AVFormatContext *s, int size)
 {
-    put_byte(&s->pb, size >> 21 & 0x7f);
-    put_byte(&s->pb, size >> 14 & 0x7f);
-    put_byte(&s->pb, size >> 7  & 0x7f);
-    put_byte(&s->pb, size       & 0x7f);
+    put_byte(s->pb, size >> 21 & 0x7f);
+    put_byte(s->pb, size >> 14 & 0x7f);
+    put_byte(s->pb, size >> 7  & 0x7f);
+    put_byte(s->pb, size       & 0x7f);
 }
 
 static void id3v2_put_ttag(AVFormatContext *s, char *string, uint32_t tag)
 {
     int len = strlen(string);
-    put_be32(&s->pb, tag);
+    put_be32(s->pb, tag);
     id3v2_put_size(s, len + 1);
-    put_be16(&s->pb, 0);
-    put_byte(&s->pb, 3); /* UTF-8 */
-    put_buffer(&s->pb, string, len);
+    put_be16(s->pb, 0);
+    put_byte(s->pb, 3); /* UTF-8 */
+    put_buffer(s->pb, string, len);
 }
 
 
@@ -602,9 +602,9 @@
     if(totlen == 0)
         return 0;
 
-    put_be32(&s->pb, MKBETAG('I', 'D', '3', 0x04)); /* ID3v2.4 */
-    put_byte(&s->pb, 0);
-    put_byte(&s->pb, 0); /* flags */
+    put_be32(s->pb, MKBETAG('I', 'D', '3', 0x04)); /* ID3v2.4 */
+    put_byte(s->pb, 0);
+    put_byte(s->pb, 0); /* flags */
 
     id3v2_put_size(s, totlen);
 
@@ -622,8 +622,8 @@
 
 static int mp3_write_packet(struct AVFormatContext *s, AVPacket *pkt)
 {
-    put_buffer(&s->pb, pkt->data, pkt->size);
-    put_flush_packet(&s->pb);
+    put_buffer(s->pb, pkt->data, pkt->size);
+    put_flush_packet(s->pb);
     return 0;
 }
 
@@ -634,8 +634,8 @@
     /* write the id3v1 tag */
     if (s->title[0] != '\0') {
         id3v1_create_tag(s, buf);
-        put_buffer(&s->pb, buf, ID3v1_TAG_SIZE);
-        put_flush_packet(&s->pb);
+        put_buffer(s->pb, buf, ID3v1_TAG_SIZE);
+        put_flush_packet(s->pb);
     }
     return 0;
 }
--- a/mpc.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/mpc.c	Wed Nov 21 07:41:00 2007 +0000
@@ -55,31 +55,31 @@
     AVStream *st;
     int t;
 
-    t = get_le24(&s->pb);
+    t = get_le24(s->pb);
     if(t != MKTAG('M', 'P', '+', 0)){
         if(t != MKTAG('I', 'D', '3', 0)){
             av_log(s, AV_LOG_ERROR, "Not a Musepack file\n");
             return -1;
         }
         /* skip ID3 tags and try again */
-        url_fskip(&s->pb, 3);
-        t  = get_byte(&s->pb) << 21;
-        t |= get_byte(&s->pb) << 14;
-        t |= get_byte(&s->pb) <<  7;
-        t |= get_byte(&s->pb);
+        url_fskip(s->pb, 3);
+        t  = get_byte(s->pb) << 21;
+        t |= get_byte(s->pb) << 14;
+        t |= get_byte(s->pb) <<  7;
+        t |= get_byte(s->pb);
         av_log(s, AV_LOG_DEBUG, "Skipping %d(%X) bytes of ID3 data\n", t, t);
-        url_fskip(&s->pb, t);
-        if(get_le24(&s->pb) != MKTAG('M', 'P', '+', 0)){
+        url_fskip(s->pb, t);
+        if(get_le24(s->pb) != MKTAG('M', 'P', '+', 0)){
             av_log(s, AV_LOG_ERROR, "Not a Musepack file\n");
             return -1;
         }
     }
-    c->ver = get_byte(&s->pb);
+    c->ver = get_byte(s->pb);
     if(c->ver != 0x07 && c->ver != 0x17){
         av_log(s, AV_LOG_ERROR, "Can demux Musepack SV7, got version %02X\n", c->ver);
         return -1;
     }
-    c->fcount = get_le32(&s->pb);
+    c->fcount = get_le32(s->pb);
     if((int64_t)c->fcount * sizeof(MPCFrame) >= UINT_MAX){
         av_log(s, AV_LOG_ERROR, "Too many frames, seeking is not possible\n");
         return -1;
@@ -100,7 +100,7 @@
 
     st->codec->extradata_size = 16;
     st->codec->extradata = av_mallocz(st->codec->extradata_size+FF_INPUT_BUFFER_PADDING_SIZE);
-    get_buffer(&s->pb, st->codec->extradata, 16);
+    get_buffer(s->pb, st->codec->extradata, 16);
     st->codec->sample_rate = mpc_rate[st->codec->extradata[2] & 3];
     av_set_pts_info(st, 32, MPC_FRAMESIZE, st->codec->sample_rate);
     /* scan for seekpoints */
@@ -120,22 +120,22 @@
         return -1;
 
     if(c->curframe != c->lastframe + 1){
-        url_fseek(&s->pb, c->frames[c->curframe].pos, SEEK_SET);
+        url_fseek(s->pb, c->frames[c->curframe].pos, SEEK_SET);
         c->curbits = c->frames[c->curframe].skip;
     }
     c->lastframe = c->curframe;
     c->curframe++;
     curbits = c->curbits;
-    pos = url_ftell(&s->pb);
-    tmp = get_le32(&s->pb);
+    pos = url_ftell(s->pb);
+    tmp = get_le32(s->pb);
     if(curbits <= 12){
         size2 = (tmp >> (12 - curbits)) & 0xFFFFF;
     }else{
-        tmp = (tmp << 32) | get_le32(&s->pb);
+        tmp = (tmp << 32) | get_le32(s->pb);
         size2 = (tmp >> (44 - curbits)) & 0xFFFFF;
     }
     curbits += 20;
-    url_fseek(&s->pb, pos, SEEK_SET);
+    url_fseek(s->pb, pos, SEEK_SET);
 
     size = ((size2 + curbits + 31) & ~31) >> 3;
     if(cur == c->frames_noted){
@@ -155,9 +155,9 @@
 
     pkt->stream_index = 0;
     pkt->pts = cur;
-    ret = get_buffer(&s->pb, pkt->data + 4, size);
+    ret = get_buffer(s->pb, pkt->data + 4, size);
     if(c->curbits)
-        url_fseek(&s->pb, -4, SEEK_CUR);
+        url_fseek(s->pb, -4, SEEK_CUR);
     if(ret < size){
         av_free_packet(pkt);
         return AVERROR(EIO);
--- a/mpc8.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/mpc8.c	Wed Nov 21 07:41:00 2007 +0000
@@ -90,15 +90,15 @@
     int i, t, seekd;
     GetBitContext gb;
 
-    url_fseek(&s->pb, off, SEEK_SET);
-    mpc8_get_chunk_header(&s->pb, &tag, &size);
+    url_fseek(s->pb, off, SEEK_SET);
+    mpc8_get_chunk_header(s->pb, &tag, &size);
     if(tag != TAG_SEEKTABLE){
         av_log(s, AV_LOG_ERROR, "No seek table at given position\n");
         return;
     }
     if(!(buf = av_malloc(size)))
         return;
-    get_buffer(&s->pb, buf, size);
+    get_buffer(s->pb, buf, size);
     init_get_bits(&gb, buf, size * 8);
     size = gb_get_v(&gb);
     if(size > UINT_MAX/4 || size > c->samples/1152){
@@ -126,7 +126,7 @@
 
 static void mpc8_handle_chunk(AVFormatContext *s, int tag, int64_t chunk_pos, int64_t size)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int64_t pos, off;
 
     switch(tag){
@@ -144,7 +144,7 @@
 static int mpc8_read_header(AVFormatContext *s, AVFormatParameters *ap)
 {
     MPCContext *c = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVStream *st;
     int tag = 0;
     int64_t size, pos;
@@ -202,11 +202,11 @@
     int tag;
     int64_t pos, size;
 
-    while(!url_feof(&s->pb)){
-        pos = url_ftell(&s->pb);
-        mpc8_get_chunk_header(&s->pb, &tag, &size);
+    while(!url_feof(s->pb)){
+        pos = url_ftell(s->pb);
+        mpc8_get_chunk_header(s->pb, &tag, &size);
         if(tag == TAG_AUDIOPACKET){
-            if(av_get_packet(&s->pb, pkt, size) < 0)
+            if(av_get_packet(s->pb, pkt, size) < 0)
                 return AVERROR(ENOMEM);
             pkt->stream_index = 0;
             pkt->pts = c->frame;
@@ -226,7 +226,7 @@
     int index = av_index_search_timestamp(st, timestamp, flags);
 
     if(index < 0) return -1;
-    url_fseek(&s->pb, st->index_entries[index].pos, SEEK_SET);
+    url_fseek(s->pb, st->index_entries[index].pos, SEEK_SET);
     c->frame = st->index_entries[index].timestamp;
     return 0;
 }
--- a/mpeg.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/mpeg.c	Wed Nov 21 07:41:00 2007 +0000
@@ -122,7 +122,7 @@
 
     m->sofdec = -1;
     do {
-        v = get_byte(&s->pb);
+        v = get_byte(s->pb);
         m->header_state = m->header_state << 8 | v;
         m->sofdec++;
     } while (v == sofdec[i] && i++ < 6);
@@ -253,17 +253,17 @@
     int len, size, startcode, c, flags, header_len;
     int pes_ext, ext2_len, id_ext, skip;
     int64_t pts, dts;
-    int64_t last_sync= url_ftell(&s->pb);
+    int64_t last_sync= url_ftell(s->pb);
 
  error_redo:
-        url_fseek(&s->pb, last_sync, SEEK_SET);
+        url_fseek(s->pb, last_sync, SEEK_SET);
  redo:
         /* next start code (should be immediately after) */
         m->header_state = 0xff;
         size = MAX_SYNC_SIZE;
-        startcode = find_next_start_code(&s->pb, &size, &m->header_state);
-        last_sync = url_ftell(&s->pb);
-    //printf("startcode=%x pos=0x%"PRIx64"\n", startcode, url_ftell(&s->pb));
+        startcode = find_next_start_code(s->pb, &size, &m->header_state);
+        last_sync = url_ftell(s->pb);
+    //printf("startcode=%x pos=0x%"PRIx64"\n", startcode, url_ftell(s->pb));
     if (startcode < 0)
         return AVERROR(EIO);
     if (startcode == PACK_START_CODE)
@@ -271,16 +271,16 @@
     if (startcode == SYSTEM_HEADER_START_CODE)
         goto redo;
     if (startcode == PADDING_STREAM) {
-        url_fskip(&s->pb, get_be16(&s->pb));
+        url_fskip(s->pb, get_be16(s->pb));
         goto redo;
     }
     if (startcode == PRIVATE_STREAM_2) {
-        len = get_be16(&s->pb);
+        len = get_be16(s->pb);
         if (!m->sofdec) {
             while (len-- >= 6) {
-                if (get_byte(&s->pb) == 'S') {
+                if (get_byte(s->pb) == 'S') {
                     uint8_t buf[5];
-                    get_buffer(&s->pb, buf, sizeof(buf));
+                    get_buffer(s->pb, buf, sizeof(buf));
                     m->sofdec = !memcmp(buf, "ofdec", 5);
                     len -= sizeof(buf);
                     break;
@@ -288,11 +288,11 @@
             }
             m->sofdec -= !m->sofdec;
         }
-        url_fskip(&s->pb, len);
+        url_fskip(s->pb, len);
         goto redo;
     }
     if (startcode == PROGRAM_STREAM_MAP) {
-        mpegps_psm_parse(m, &s->pb);
+        mpegps_psm_parse(m, s->pb);
         goto redo;
     }
 
@@ -302,16 +302,16 @@
           (startcode == 0x1bd) || (startcode == 0x1fd)))
         goto redo;
     if (ppos) {
-        *ppos = url_ftell(&s->pb) - 4;
+        *ppos = url_ftell(s->pb) - 4;
     }
-    len = get_be16(&s->pb);
+    len = get_be16(s->pb);
     pts =
     dts = AV_NOPTS_VALUE;
     /* stuffing */
     for(;;) {
         if (len < 1)
             goto error_redo;
-        c = get_byte(&s->pb);
+        c = get_byte(s->pb);
         len--;
         /* XXX: for mpeg1, should test only bit 7 */
         if (c != 0xff)
@@ -319,15 +319,15 @@
     }
     if ((c & 0xc0) == 0x40) {
         /* buffer scale & size */
-        get_byte(&s->pb);
-        c = get_byte(&s->pb);
+        get_byte(s->pb);
+        c = get_byte(s->pb);
         len -= 2;
     }
     if ((c & 0xe0) == 0x20) {
-        dts = pts = get_pts(&s->pb, c);
+        dts = pts = get_pts(s->pb, c);
         len -= 4;
         if (c & 0x10){
-            dts = get_pts(&s->pb, -1);
+            dts = get_pts(s->pb, -1);
             len -= 5;
         }
     } else if ((c & 0xc0) == 0x80) {
@@ -338,22 +338,22 @@
             goto redo;
         }
 #endif
-        flags = get_byte(&s->pb);
-        header_len = get_byte(&s->pb);
+        flags = get_byte(s->pb);
+        header_len = get_byte(s->pb);
         len -= 2;
         if (header_len > len)
             goto error_redo;
         len -= header_len;
         if (flags & 0x80) {
-            dts = pts = get_pts(&s->pb, -1);
+            dts = pts = get_pts(s->pb, -1);
             header_len -= 5;
             if (flags & 0x40) {
-                dts = get_pts(&s->pb, -1);
+                dts = get_pts(s->pb, -1);
                 header_len -= 5;
             }
         }
         if (flags & 0x01) { /* PES extension */
-            pes_ext = get_byte(&s->pb);
+            pes_ext = get_byte(s->pb);
             header_len--;
             if (pes_ext & 0x40) { /* pack header - should be zero in PS */
                 goto error_redo;
@@ -361,14 +361,14 @@
             /* Skip PES private data, program packet sequence counter and P-STD buffer */
             skip = (pes_ext >> 4) & 0xb;
             skip += skip & 0x9;
-            url_fskip(&s->pb, skip);
+            url_fskip(s->pb, skip);
             header_len -= skip;
 
             if (pes_ext & 0x01) { /* PES extension 2 */
-                ext2_len = get_byte(&s->pb);
+                ext2_len = get_byte(s->pb);
                 header_len--;
                 if ((ext2_len & 0x7f) > 0) {
-                    id_ext = get_byte(&s->pb);
+                    id_ext = get_byte(s->pb);
                     if ((id_ext & 0x80) == 0)
                         startcode = ((startcode & 0xff) << 8) | id_ext;
                     header_len--;
@@ -377,23 +377,23 @@
         }
         if(header_len < 0)
             goto error_redo;
-        url_fskip(&s->pb, header_len);
+        url_fskip(s->pb, header_len);
     }
     else if( c!= 0xf )
         goto redo;
 
     if (startcode == PRIVATE_STREAM_1 && !m->psm_es_type[startcode & 0xff]) {
-        startcode = get_byte(&s->pb);
+        startcode = get_byte(s->pb);
         len--;
         if (startcode >= 0x80 && startcode <= 0xcf) {
             /* audio: skip header */
-            get_byte(&s->pb);
-            get_byte(&s->pb);
-            get_byte(&s->pb);
+            get_byte(s->pb);
+            get_byte(s->pb);
+            get_byte(s->pb);
             len -= 3;
             if (startcode >= 0xb0 && startcode <= 0xbf) {
                 /* MLP/TrueHD audio has a 4-byte header */
-                get_byte(&s->pb);
+                get_byte(s->pb);
                 len--;
             }
         }
@@ -465,8 +465,8 @@
     } else if (startcode >= 0x1e0 && startcode <= 0x1ef) {
         static const unsigned char avs_seqh[4] = { 0, 0, 1, 0xb0 };
         unsigned char buf[8];
-        get_buffer(&s->pb, buf, 8);
-        url_fseek(&s->pb, -8, SEEK_CUR);
+        get_buffer(s->pb, buf, 8);
+        url_fseek(s->pb, -8, SEEK_CUR);
         if(!memcmp(buf, avs_seqh, 4) && (buf[6] != 0 || buf[7] != 1))
             codec_id = CODEC_ID_CAVS;
         else
@@ -502,7 +502,7 @@
     } else {
     skip:
         /* skip packet */
-        url_fskip(&s->pb, len);
+        url_fskip(s->pb, len);
         goto redo;
     }
     /* no stream found: add a new stream */
@@ -523,9 +523,9 @@
            audio data */
         if (len <= 3)
             goto skip;
-        get_byte(&s->pb); /* emphasis (1), muse(1), reserved(1), frame number(5) */
-        b1 = get_byte(&s->pb); /* quant (2), freq(2), reserved(1), channels(3) */
-        get_byte(&s->pb); /* dynamic range control (0x80 = off) */
+        get_byte(s->pb); /* emphasis (1), muse(1), reserved(1), frame number(5) */
+        b1 = get_byte(s->pb); /* quant (2), freq(2), reserved(1), channels(3) */
+        get_byte(s->pb); /* dynamic range control (0x80 = off) */
         len -= 3;
         freq = (b1 >> 4) & 3;
         st->codec->sample_rate = lpcm_freq_tab[freq];
@@ -533,7 +533,7 @@
         st->codec->bit_rate = st->codec->channels * st->codec->sample_rate * 2;
     }
     av_new_packet(pkt, len);
-    get_buffer(&s->pb, pkt->data, pkt->size);
+    get_buffer(s->pb, pkt->data, pkt->size);
     pkt->pts = pts;
     pkt->dts = dts;
     pkt->stream_index = st->index;
@@ -560,7 +560,7 @@
 #ifdef DEBUG_SEEK
     printf("read_dts: pos=0x%"PRIx64" next=%d -> ", pos, find_next);
 #endif
-    url_fseek(&s->pb, pos, SEEK_SET);
+    url_fseek(s->pb, pos, SEEK_SET);
     for(;;) {
         len = mpegps_read_pes_header(s, &pos, &startcode, &pts, &dts);
         if (len < 0) {
@@ -573,7 +573,7 @@
             dts != AV_NOPTS_VALUE) {
             break;
         }
-        url_fskip(&s->pb, len);
+        url_fskip(s->pb, len);
     }
 #ifdef DEBUG_SEEK
     printf("pos=0x%"PRIx64" dts=0x%"PRIx64" %0.3f\n", pos, dts, dts / 90000.0);
--- a/mpegenc.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/mpegenc.c	Wed Nov 21 07:41:00 2007 +0000
@@ -690,19 +690,19 @@
                     size = put_system_header(ctx, buf_ptr, 0);
                     buf_ptr += size;
                     size = buf_ptr - buffer;
-                    put_buffer(&ctx->pb, buffer, size);
+                    put_buffer(ctx->pb, buffer, size);
 
-                    put_be32(&ctx->pb, PRIVATE_STREAM_2);
-                    put_be16(&ctx->pb, 0x03d4);         // length
-                    put_byte(&ctx->pb, 0x00);           // substream ID, 00=PCI
+                    put_be32(ctx->pb, PRIVATE_STREAM_2);
+                    put_be16(ctx->pb, 0x03d4);         // length
+                    put_byte(ctx->pb, 0x00);           // substream ID, 00=PCI
                     for (i = 0; i < 979; i++)
-                        put_byte(&ctx->pb, 0x00);
+                        put_byte(ctx->pb, 0x00);
 
-                    put_be32(&ctx->pb, PRIVATE_STREAM_2);
-                    put_be16(&ctx->pb, 0x03fa);         // length
-                    put_byte(&ctx->pb, 0x01);           // substream ID, 01=DSI
+                    put_be32(ctx->pb, PRIVATE_STREAM_2);
+                    put_be16(ctx->pb, 0x03fa);         // length
+                    put_byte(ctx->pb, 0x01);           // substream ID, 01=DSI
                     for (i = 0; i < 1017; i++)
-                        put_byte(&ctx->pb, 0x00);
+                        put_byte(ctx->pb, 0x00);
 
                     memset(buffer, 0, 128);
                     buf_ptr = buffer;
@@ -725,7 +725,7 @@
         }
     }
     size = buf_ptr - buffer;
-    put_buffer(&ctx->pb, buffer, size);
+    put_buffer(ctx->pb, buffer, size);
 
     packet_size = s->packet_size - size;
 
@@ -830,16 +830,16 @@
 
         nb_frames= get_nb_frames(ctx, stream, payload_size - stuffing_size);
 
-        put_be32(&ctx->pb, startcode);
+        put_be32(ctx->pb, startcode);
 
-        put_be16(&ctx->pb, packet_size);
+        put_be16(ctx->pb, packet_size);
 
         if (!s->is_mpeg2)
             for(i=0;i<stuffing_size;i++)
-                put_byte(&ctx->pb, 0xff);
+                put_byte(ctx->pb, 0xff);
 
         if (s->is_mpeg2) {
-            put_byte(&ctx->pb, 0x80); /* mpeg2 id */
+            put_byte(ctx->pb, 0x80); /* mpeg2 id */
 
             pes_flags=0;
 
@@ -856,64 +856,64 @@
             if (stream->packet_number == 0)
                 pes_flags |= 0x01;
 
-            put_byte(&ctx->pb, pes_flags); /* flags */
-            put_byte(&ctx->pb, header_len - 3 + stuffing_size);
+            put_byte(ctx->pb, pes_flags); /* flags */
+            put_byte(ctx->pb, header_len - 3 + stuffing_size);
 
             if (pes_flags & 0x80)  /*write pts*/
-                put_timestamp(&ctx->pb, (pes_flags & 0x40) ? 0x03 : 0x02, pts);
+                put_timestamp(ctx->pb, (pes_flags & 0x40) ? 0x03 : 0x02, pts);
             if (pes_flags & 0x40)  /*write dts*/
-                put_timestamp(&ctx->pb, 0x01, dts);
+                put_timestamp(ctx->pb, 0x01, dts);
 
             if (pes_flags & 0x01) {  /*write pes extension*/
-                put_byte(&ctx->pb, 0x10); /* flags */
+                put_byte(ctx->pb, 0x10); /* flags */
 
                 /* P-STD buffer info */
                 if (id == AUDIO_ID)
-                    put_be16(&ctx->pb, 0x4000 | stream->max_buffer_size/128);
+                    put_be16(ctx->pb, 0x4000 | stream->max_buffer_size/128);
                 else
-                    put_be16(&ctx->pb, 0x6000 | stream->max_buffer_size/1024);
+                    put_be16(ctx->pb, 0x6000 | stream->max_buffer_size/1024);
             }
 
         } else {
             if (pts != AV_NOPTS_VALUE) {
                 if (dts != pts) {
-                    put_timestamp(&ctx->pb, 0x03, pts);
-                    put_timestamp(&ctx->pb, 0x01, dts);
+                    put_timestamp(ctx->pb, 0x03, pts);
+                    put_timestamp(ctx->pb, 0x01, dts);
                 } else {
-                    put_timestamp(&ctx->pb, 0x02, pts);
+                    put_timestamp(ctx->pb, 0x02, pts);
                 }
             } else {
-                put_byte(&ctx->pb, 0x0f);
+                put_byte(ctx->pb, 0x0f);
             }
         }
 
         if (s->is_mpeg2) {
             /* special stuffing byte that is always written
                to prevent accidental generation of start codes. */
-            put_byte(&ctx->pb, 0xff);
+            put_byte(ctx->pb, 0xff);
 
             for(i=0;i<stuffing_size;i++)
-                put_byte(&ctx->pb, 0xff);
+                put_byte(ctx->pb, 0xff);
         }
 
         if (startcode == PRIVATE_STREAM_1) {
-            put_byte(&ctx->pb, id);
+            put_byte(ctx->pb, id);
             if (id >= 0xa0) {
                 /* LPCM (XXX: check nb_frames) */
-                put_byte(&ctx->pb, 7);
-                put_be16(&ctx->pb, 4); /* skip 3 header bytes */
-                put_byte(&ctx->pb, stream->lpcm_header[0]);
-                put_byte(&ctx->pb, stream->lpcm_header[1]);
-                put_byte(&ctx->pb, stream->lpcm_header[2]);
+                put_byte(ctx->pb, 7);
+                put_be16(ctx->pb, 4); /* skip 3 header bytes */
+                put_byte(ctx->pb, stream->lpcm_header[0]);
+                put_byte(ctx->pb, stream->lpcm_header[1]);
+                put_byte(ctx->pb, stream->lpcm_header[2]);
             } else if (id >= 0x40) {
                 /* AC3 */
-                put_byte(&ctx->pb, nb_frames);
-                put_be16(&ctx->pb, trailer_size+1);
+                put_byte(ctx->pb, nb_frames);
+                put_be16(ctx->pb, trailer_size+1);
             }
         }
 
         /* output data */
-        if(av_fifo_generic_read(&stream->fifo, payload_size - stuffing_size, &put_buffer, &ctx->pb) < 0)
+        if(av_fifo_generic_read(&stream->fifo, payload_size - stuffing_size, &put_buffer, ctx->pb) < 0)
             return -1;
         stream->bytes_to_iframe -= payload_size - stuffing_size;
     }else{
@@ -922,12 +922,12 @@
     }
 
     if (pad_packet_bytes > 0)
-        put_padding_packet(ctx,&ctx->pb, pad_packet_bytes);
+        put_padding_packet(ctx,ctx->pb, pad_packet_bytes);
 
     for(i=0;i<zero_trail_bytes;i++)
-        put_byte(&ctx->pb, 0x00);
+        put_byte(ctx->pb, 0x00);
 
-    put_flush_packet(&ctx->pb);
+    put_flush_packet(ctx->pb);
 
     s->packet_number++;
 
@@ -952,11 +952,11 @@
     int i;
 
     for(i=0;i<s->packet_size;i++)
-        put_byte(&ctx->pb, 0);
+        put_byte(ctx->pb, 0);
 
     s->vcd_padding_bytes_written += s->packet_size;
 
-    put_flush_packet(&ctx->pb);
+    put_flush_packet(ctx->pb);
 
     /* increasing the packet number is correct. The SCR of the following packs
        is calculated from the packet_number and it has to include the padding
@@ -1206,8 +1206,8 @@
     /* End header according to MPEG1 systems standard. We do not write
        it as it is usually not needed by decoders and because it
        complicates MPEG stream concatenation. */
-    //put_be32(&ctx->pb, ISO_11172_END_CODE);
-    //put_flush_packet(&ctx->pb);
+    //put_be32(ctx->pb, ISO_11172_END_CODE);
+    //put_flush_packet(ctx->pb);
 
     for(i=0;i<ctx->nb_streams;i++) {
         stream = ctx->streams[i]->priv_data;
--- a/mpegts.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/mpegts.c	Wed Nov 21 07:41:00 2007 +0000
@@ -1098,7 +1098,7 @@
 static int handle_packets(MpegTSContext *ts, int nb_packets)
 {
     AVFormatContext *s = ts->stream;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     uint8_t packet[TS_PACKET_SIZE];
     int packet_num, ret;
 
@@ -1180,7 +1180,7 @@
                               AVFormatParameters *ap)
 {
     MpegTSContext *ts = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     uint8_t buf[1024];
     int len;
     int64_t pos;
@@ -1243,7 +1243,7 @@
         nb_pcrs = 0;
         nb_packets = 0;
         for(;;) {
-            ret = read_packet(&s->pb, packet, ts->raw_packet_size);
+            ret = read_packet(s->pb, packet, ts->raw_packet_size);
             if (ret < 0)
                 return -1;
             pid = AV_RB16(packet + 1) & 0x1fff;
@@ -1291,8 +1291,8 @@
 
     if (av_new_packet(pkt, TS_PACKET_SIZE) < 0)
         return AVERROR(ENOMEM);
-    pkt->pos= url_ftell(&s->pb);
-    ret = read_packet(&s->pb, pkt->data, ts->raw_packet_size);
+    pkt->pos= url_ftell(s->pb);
+    ret = read_packet(s->pb, pkt->data, ts->raw_packet_size);
     if (ret < 0) {
         av_free_packet(pkt);
         return ret;
@@ -1301,10 +1301,10 @@
         /* compute exact PCR for each packet */
         if (parse_pcr(&pcr_h, &pcr_l, pkt->data) == 0) {
             /* we read the next PCR (XXX: optimize it by using a bigger buffer */
-            pos = url_ftell(&s->pb);
+            pos = url_ftell(s->pb);
             for(i = 0; i < MAX_PACKET_READAHEAD; i++) {
-                url_fseek(&s->pb, pos + i * ts->raw_packet_size, SEEK_SET);
-                get_buffer(&s->pb, pcr_buf, 12);
+                url_fseek(s->pb, pos + i * ts->raw_packet_size, SEEK_SET);
+                get_buffer(s->pb, pcr_buf, 12);
                 if (parse_pcr(&next_pcr_h, &next_pcr_l, pcr_buf) == 0) {
                     /* XXX: not precise enough */
                     ts->pcr_incr = ((next_pcr_h - pcr_h) * 300 + (next_pcr_l - pcr_l)) /
@@ -1312,7 +1312,7 @@
                     break;
                 }
             }
-            url_fseek(&s->pb, pos, SEEK_SET);
+            url_fseek(s->pb, pos, SEEK_SET);
             /* no next PCR found: we use previous increment */
             ts->cur_pcr = pcr_h * 300 + pcr_l;
         }
@@ -1354,8 +1354,8 @@
     pos = ((*ppos  + ts->raw_packet_size - 1) / ts->raw_packet_size) * ts->raw_packet_size;
     if (find_next) {
         for(;;) {
-            url_fseek(&s->pb, pos, SEEK_SET);
-            if (get_buffer(&s->pb, buf, TS_PACKET_SIZE) != TS_PACKET_SIZE)
+            url_fseek(s->pb, pos, SEEK_SET);
+            if (get_buffer(s->pb, buf, TS_PACKET_SIZE) != TS_PACKET_SIZE)
                 return AV_NOPTS_VALUE;
             if ((pcr_pid < 0 || (AV_RB16(buf + 1) & 0x1fff) == pcr_pid) &&
                 parse_pcr(&timestamp, &pcr_l, buf) == 0) {
@@ -1368,8 +1368,8 @@
             pos -= ts->raw_packet_size;
             if (pos < 0)
                 return AV_NOPTS_VALUE;
-            url_fseek(&s->pb, pos, SEEK_SET);
-            if (get_buffer(&s->pb, buf, TS_PACKET_SIZE) != TS_PACKET_SIZE)
+            url_fseek(s->pb, pos, SEEK_SET);
+            if (get_buffer(s->pb, buf, TS_PACKET_SIZE) != TS_PACKET_SIZE)
                 return AV_NOPTS_VALUE;
             if ((pcr_pid < 0 || (AV_RB16(buf + 1) & 0x1fff) == pcr_pid) &&
                 parse_pcr(&timestamp, &pcr_l, buf) == 0) {
@@ -1390,17 +1390,17 @@
     if(av_seek_frame_binary(s, stream_index, target_ts, flags) < 0)
         return -1;
 
-    pos= url_ftell(&s->pb);
+    pos= url_ftell(s->pb);
 
     for(;;) {
-        url_fseek(&s->pb, pos, SEEK_SET);
-        if (get_buffer(&s->pb, buf, TS_PACKET_SIZE) != TS_PACKET_SIZE)
+        url_fseek(s->pb, pos, SEEK_SET);
+        if (get_buffer(s->pb, buf, TS_PACKET_SIZE) != TS_PACKET_SIZE)
             return -1;
 //        pid = AV_RB16(buf + 1) & 0x1fff;
         if(buf[1] & 0x40) break;
         pos += ts->raw_packet_size;
     }
-    url_fseek(&s->pb, pos, SEEK_SET);
+    url_fseek(s->pb, pos, SEEK_SET);
 
     return 0;
 }
--- a/mpegtsenc.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/mpegtsenc.c	Wed Nov 21 07:41:00 2007 +0000
@@ -353,7 +353,7 @@
 static void section_write_packet(MpegTSSection *s, const uint8_t *packet)
 {
     AVFormatContext *ctx = s->opaque;
-    put_buffer(&ctx->pb, packet, TS_PACKET_SIZE);
+    put_buffer(ctx->pb, packet, TS_PACKET_SIZE);
 }
 
 static int mpegts_write_header(AVFormatContext *s)
@@ -431,7 +431,7 @@
     for(i = 0; i < ts->nb_services; i++) {
         mpegts_write_pmt(s, ts->services[i]);
     }
-    put_flush_packet(&s->pb);
+    put_flush_packet(s->pb);
 
     return 0;
 
@@ -608,9 +608,9 @@
         memcpy(buf + TS_PACKET_SIZE - len, payload, len);
         payload += len;
         payload_size -= len;
-        put_buffer(&s->pb, buf, TS_PACKET_SIZE);
+        put_buffer(s->pb, buf, TS_PACKET_SIZE);
     }
-    put_flush_packet(&s->pb);
+    put_flush_packet(s->pb);
 }
 
 static int mpegts_write_packet(AVFormatContext *s, AVPacket *pkt)
@@ -668,7 +668,7 @@
                              ts_st->payload_pts, ts_st->payload_dts);
         }
     }
-    put_flush_packet(&s->pb);
+    put_flush_packet(s->pb);
 
     for(i = 0; i < ts->nb_services; i++) {
         service = ts->services[i];
--- a/mpjpeg.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/mpjpeg.c	Wed Nov 21 07:41:00 2007 +0000
@@ -29,8 +29,8 @@
     uint8_t buf1[256];
 
     snprintf(buf1, sizeof(buf1), "--%s\n", BOUNDARY_TAG);
-    put_buffer(&s->pb, buf1, strlen(buf1));
-    put_flush_packet(&s->pb);
+    put_buffer(s->pb, buf1, strlen(buf1));
+    put_flush_packet(s->pb);
     return 0;
 }
 
@@ -39,12 +39,12 @@
     uint8_t buf1[256];
 
     snprintf(buf1, sizeof(buf1), "Content-type: image/jpeg\n\n");
-    put_buffer(&s->pb, buf1, strlen(buf1));
-    put_buffer(&s->pb, pkt->data, pkt->size);
+    put_buffer(s->pb, buf1, strlen(buf1));
+    put_buffer(s->pb, pkt->data, pkt->size);
 
     snprintf(buf1, sizeof(buf1), "\n--%s\n", BOUNDARY_TAG);
-    put_buffer(&s->pb, buf1, strlen(buf1));
-    put_flush_packet(&s->pb);
+    put_buffer(s->pb, buf1, strlen(buf1));
+    put_flush_packet(s->pb);
     return 0;
 }
 
--- a/mtv.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/mtv.c	Wed Nov 21 07:41:00 2007 +0000
@@ -65,7 +65,7 @@
 static int mtv_read_header(AVFormatContext *s, AVFormatParameters *ap)
 {
     MTVDemuxContext    *mtv = s->priv_data;
-    ByteIOContext      *pb  = &s->pb;
+    ByteIOContext      *pb  = s->pb;
     AVStream           *st;
 
 
@@ -131,7 +131,7 @@
 static int mtv_read_packet(AVFormatContext *s, AVPacket *pkt)
 {
     MTVDemuxContext *mtv = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int ret;
 #ifndef WORDS_BIGENDIAN
     int i;
--- a/mxf.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/mxf.c	Wed Nov 21 07:41:00 2007 +0000
@@ -269,7 +269,7 @@
 {
     static const uint8_t checkv[16] = {0x43, 0x48, 0x55, 0x4b, 0x43, 0x48, 0x55, 0x4b, 0x43, 0x48, 0x55, 0x4b, 0x43, 0x48, 0x55, 0x4b};
     MXFContext *mxf = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     offset_t end = url_ftell(pb) + klv->length;
     uint64_t size;
     uint64_t orig_size;
@@ -326,8 +326,8 @@
 {
     KLVPacket klv;
 
-    while (!url_feof(&s->pb)) {
-        if (klv_read_packet(&klv, &s->pb) < 0)
+    while (!url_feof(s->pb)) {
+        if (klv_read_packet(&klv, s->pb) < 0)
             return -1;
 #ifdef DEBUG
         PRINT_KEY(s, "read packet", klv.key);
@@ -344,22 +344,22 @@
             int index = mxf_get_stream_index(s, &klv);
             if (index < 0) {
                 av_log(s, AV_LOG_ERROR, "error getting stream index\n");
-                url_fskip(&s->pb, klv.length);
+                url_fskip(s->pb, klv.length);
                 return -1;
             }
             /* check for 8 channels AES3 element */
             if (klv.key[12] == 0x06 && klv.key[13] == 0x01 && klv.key[14] == 0x10) {
-                if (mxf_get_d10_aes3_packet(&s->pb, s->streams[index], pkt, klv.length) < 0) {
+                if (mxf_get_d10_aes3_packet(s->pb, s->streams[index], pkt, klv.length) < 0) {
                     av_log(s, AV_LOG_ERROR, "error reading D-10 aes3 frame\n");
                     return -1;
                 }
             } else
-                av_get_packet(&s->pb, pkt, klv.length);
+                av_get_packet(s->pb, pkt, klv.length);
             pkt->stream_index = index;
             pkt->pos = klv.offset;
             return 0;
         } else
-            url_fskip(&s->pb, klv.length);
+            url_fskip(s->pb, klv.length);
     }
     return AVERROR(EIO);
 }
@@ -897,7 +897,7 @@
 
 static int mxf_read_local_tags(MXFContext *mxf, KLVPacket *klv, int (*read_child)(), int ctx_size, enum MXFMetadataSetType type)
 {
-    ByteIOContext *pb = &mxf->fc->pb;
+    ByteIOContext *pb = mxf->fc->pb;
     MXFMetadataSet *ctx = ctx_size ? av_mallocz(ctx_size) : mxf;
     uint64_t klv_end= url_ftell(pb) + klv->length;
 
@@ -926,16 +926,16 @@
     MXFContext *mxf = s->priv_data;
     KLVPacket klv;
 
-    if (!mxf_read_sync(&s->pb, mxf_header_partition_pack_key, 14)) {
+    if (!mxf_read_sync(s->pb, mxf_header_partition_pack_key, 14)) {
         av_log(s, AV_LOG_ERROR, "could not find header partition pack key\n");
         return -1;
     }
-    url_fseek(&s->pb, -14, SEEK_CUR);
+    url_fseek(s->pb, -14, SEEK_CUR);
     mxf->fc = s;
-    while (!url_feof(&s->pb)) {
+    while (!url_feof(s->pb)) {
         const MXFMetadataReadTableEntry *metadata;
 
-        if (klv_read_packet(&klv, &s->pb) < 0)
+        if (klv_read_packet(&klv, s->pb) < 0)
             return -1;
 #ifdef DEBUG
         PRINT_KEY(s, "read header", klv.key);
@@ -943,7 +943,7 @@
         if (IS_KLV_KEY(klv.key, mxf_encrypted_triplet_key) ||
             IS_KLV_KEY(klv.key, mxf_essence_element_key)) {
             /* FIXME avoid seek */
-            url_fseek(&s->pb, klv.offset, SEEK_SET);
+            url_fseek(s->pb, klv.offset, SEEK_SET);
             break;
         }
 
@@ -957,7 +957,7 @@
             }
         }
         if (!metadata->read)
-            url_fskip(&s->pb, klv.length);
+            url_fskip(s->pb, klv.length);
     }
     return mxf_parse_structural_metadata(mxf);
 }
@@ -1018,7 +1018,7 @@
     if (sample_time < 0)
         sample_time = 0;
     seconds = av_rescale(sample_time, st->time_base.num, st->time_base.den);
-    url_fseek(&s->pb, (s->bit_rate * seconds) >> 3, SEEK_SET);
+    url_fseek(s->pb, (s->bit_rate * seconds) >> 3, SEEK_SET);
     av_update_cur_dts(s, st, sample_time);
     return 0;
 }
--- a/nsvdec.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/nsvdec.c	Wed Nov 21 07:41:00 2007 +0000
@@ -228,7 +228,7 @@
 static int nsv_resync(AVFormatContext *s)
 {
     NSVContext *nsv = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     uint32_t v = 0;
     int i;
 
@@ -275,7 +275,7 @@
 static int nsv_parse_NSVf_header(AVFormatContext *s, AVFormatParameters *ap)
 {
     NSVContext *nsv = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     unsigned int file_size, size;
     int64_t duration;
     int strings_size;
@@ -394,7 +394,7 @@
 static int nsv_parse_NSVs_header(AVFormatContext *s, AVFormatParameters *ap)
 {
     NSVContext *nsv = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     uint32_t vtag, atag;
     uint16_t vwidth, vheight;
     AVRational framerate;
@@ -533,7 +533,7 @@
 static int nsv_read_chunk(AVFormatContext *s, int fill_header)
 {
     NSVContext *nsv = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVStream *st[2] = {NULL, NULL};
     NSVStream *nst;
     AVPacket *pkt;
--- a/nutdec.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/nutdec.c	Wed Nov 21 07:41:00 2007 +0000
@@ -181,7 +181,7 @@
 
 static int decode_main_header(NUTContext *nut){
     AVFormatContext *s= nut->avf;
-    ByteIOContext *bc = &s->pb;
+    ByteIOContext *bc = s->pb;
     uint64_t tmp, end;
     unsigned int stream_count;
     int i, j, tmp_stream, tmp_mul, tmp_pts, tmp_size, count, tmp_res;
@@ -268,7 +268,7 @@
 
 static int decode_stream_header(NUTContext *nut){
     AVFormatContext *s= nut->avf;
-    ByteIOContext *bc = &s->pb;
+    ByteIOContext *bc = s->pb;
     StreamContext *stc;
     int class, stream_id;
     uint64_t tmp, end;
@@ -354,7 +354,7 @@
 
 static int decode_info_header(NUTContext *nut){
     AVFormatContext *s= nut->avf;
-    ByteIOContext *bc = &s->pb;
+    ByteIOContext *bc = s->pb;
     uint64_t tmp;
     unsigned int stream_id_plus1, chapter_start, chapter_len, count;
     int chapter_id, i;
@@ -412,7 +412,7 @@
 
 static int decode_syncpoint(NUTContext *nut, int64_t *ts, int64_t *back_ptr){
     AVFormatContext *s= nut->avf;
-    ByteIOContext *bc = &s->pb;
+    ByteIOContext *bc = s->pb;
     int64_t end, tmp;
 
     nut->last_syncpoint_pos= url_ftell(bc)-8;
@@ -440,7 +440,7 @@
 
 static int find_and_decode_index(NUTContext *nut){
     AVFormatContext *s= nut->avf;
-    ByteIOContext *bc = &s->pb;
+    ByteIOContext *bc = s->pb;
     uint64_t tmp, end;
     int i, j, syncpoint_count;
     int64_t filesize= url_fsize(bc);
@@ -531,7 +531,7 @@
 static int nut_read_header(AVFormatContext *s, AVFormatParameters *ap)
 {
     NUTContext *nut = s->priv_data;
-    ByteIOContext *bc = &s->pb;
+    ByteIOContext *bc = s->pb;
     int64_t pos;
     int inited_stream_count;
 
@@ -592,7 +592,7 @@
 
 static int decode_frame_header(NUTContext *nut, int64_t *pts, int *stream_id, int frame_code){
     AVFormatContext *s= nut->avf;
-    ByteIOContext *bc = &s->pb;
+    ByteIOContext *bc = s->pb;
     StreamContext *stc;
     int size, flags, size_mul, pts_delta, i, reserved_count;
     uint64_t tmp;
@@ -648,7 +648,7 @@
 
 static int decode_frame(NUTContext *nut, AVPacket *pkt, int frame_code){
     AVFormatContext *s= nut->avf;
-    ByteIOContext *bc = &s->pb;
+    ByteIOContext *bc = s->pb;
     int size, stream_id, discard;
     int64_t pts, last_IP_pts;
     StreamContext *stc;
@@ -684,7 +684,7 @@
 static int nut_read_packet(AVFormatContext *s, AVPacket *pkt)
 {
     NUTContext *nut = s->priv_data;
-    ByteIOContext *bc = &s->pb;
+    ByteIOContext *bc = s->pb;
     int i, frame_code=0, ret, skip;
     int64_t ts, back_ptr;
 
@@ -740,7 +740,7 @@
 
 static int64_t nut_read_timestamp(AVFormatContext *s, int stream_index, int64_t *pos_arg, int64_t pos_limit){
     NUTContext *nut = s->priv_data;
-    ByteIOContext *bc = &s->pb;
+    ByteIOContext *bc = s->pb;
     int64_t pos, pts, back_ptr;
 av_log(s, AV_LOG_DEBUG, "read_timestamp(X,%d,%"PRId64",%"PRId64")\n", stream_index, *pos_arg, pos_limit);
 
@@ -803,8 +803,8 @@
         pos2= sp->back_ptr  - 15;
     }
     av_log(NULL, AV_LOG_DEBUG, "SEEKTO: %"PRId64"\n", pos2);
-    pos= find_startcode(&s->pb, SYNCPOINT_STARTCODE, pos2);
-    url_fseek(&s->pb, pos, SEEK_SET);
+    pos= find_startcode(s->pb, SYNCPOINT_STARTCODE, pos2);
+    url_fseek(s->pb, pos, SEEK_SET);
     av_log(NULL, AV_LOG_DEBUG, "SP: %"PRId64"\n", pos);
     if(pos2 > pos || pos2 + 15 < pos){
         av_log(NULL, AV_LOG_ERROR, "no syncpoint at backptr pos\n");
--- a/nutenc.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/nutenc.c	Wed Nov 21 07:41:00 2007 +0000
@@ -324,19 +324,20 @@
     return 1;
 }
 
-static void write_globalinfo(NUTContext *nut, ByteIOContext *bc){
+static int write_globalinfo(NUTContext *nut, ByteIOContext *bc){
     AVFormatContext *s= nut->avf;
-    ByteIOContext dyn_bc;
+    ByteIOContext *dyn_bc;
     uint8_t *dyn_buf=NULL;
     int count=0, dyn_size;
-
-    url_open_dyn_buf(&dyn_bc);
+    int ret = url_open_dyn_buf(&dyn_bc);
+    if(ret < 0)
+        return ret;
 
-    if(s->title    [0]) count+= add_info(&dyn_bc, "Title"    , s->title);
-    if(s->author   [0]) count+= add_info(&dyn_bc, "Author"   , s->author);
-    if(s->copyright[0]) count+= add_info(&dyn_bc, "Copyright", s->copyright);
+    if(s->title    [0]) count+= add_info(dyn_bc, "Title"    , s->title);
+    if(s->author   [0]) count+= add_info(dyn_bc, "Author"   , s->author);
+    if(s->copyright[0]) count+= add_info(dyn_bc, "Copyright", s->copyright);
     if(!(s->streams[0]->codec->flags & CODEC_FLAG_BITEXACT))
-                        count+= add_info(&dyn_bc, "Encoder"  , LIBAVFORMAT_IDENT);
+                        count+= add_info(dyn_bc, "Encoder"  , LIBAVFORMAT_IDENT);
 
     put_v(bc, 0); //stream_if_plus1
     put_v(bc, 0); //chapter_id
@@ -345,38 +346,46 @@
 
     put_v(bc, count);
 
-    dyn_size= url_close_dyn_buf(&dyn_bc, &dyn_buf);
+    dyn_size= url_close_dyn_buf(dyn_bc, &dyn_buf);
     put_buffer(bc, dyn_buf, dyn_size);
     av_free(dyn_buf);
+    return 0;
 }
 
-static void write_headers(NUTContext *nut, ByteIOContext *bc){
-    ByteIOContext dyn_bc;
-    int i;
+static int write_headers(NUTContext *nut, ByteIOContext *bc){
+    ByteIOContext *dyn_bc;
+    int i, ret;
 
-    url_open_dyn_buf(&dyn_bc);
-    write_mainheader(nut, &dyn_bc);
-    put_packet(nut, bc, &dyn_bc, 1, MAIN_STARTCODE);
+    ret = url_open_dyn_buf(&dyn_bc);
+    if(ret < 0)
+        return ret;
+    write_mainheader(nut, dyn_bc);
+    put_packet(nut, bc, dyn_bc, 1, MAIN_STARTCODE);
 
     for (i=0; i < nut->avf->nb_streams; i++){
         AVCodecContext *codec = nut->avf->streams[i]->codec;
 
-        url_open_dyn_buf(&dyn_bc);
-        write_streamheader(nut, &dyn_bc, codec, i);
-        put_packet(nut, bc, &dyn_bc, 1, STREAM_STARTCODE);
+        ret = url_open_dyn_buf(&dyn_bc);
+        if(ret < 0)
+            return ret;
+        write_streamheader(nut, dyn_bc, codec, i);
+        put_packet(nut, bc, dyn_bc, 1, STREAM_STARTCODE);
     }
 
-    url_open_dyn_buf(&dyn_bc);
-    write_globalinfo(nut, &dyn_bc);
-    put_packet(nut, bc, &dyn_bc, 1, INFO_STARTCODE);
+    ret = url_open_dyn_buf(&dyn_bc);
+    if(ret < 0)
+        return ret;
+    write_globalinfo(nut, dyn_bc);
+    put_packet(nut, bc, dyn_bc, 1, INFO_STARTCODE);
 
     nut->last_syncpoint_pos= INT_MIN;
     nut->header_count++;
+    return 0;
 }
 
 static int write_header(AVFormatContext *s){
     NUTContext *nut = s->priv_data;
-    ByteIOContext *bc = &s->pb;
+    ByteIOContext *bc = s->pb;
     int i, j;
 
     nut->avf= s;
@@ -441,12 +450,13 @@
 static int write_packet(AVFormatContext *s, AVPacket *pkt){
     NUTContext *nut = s->priv_data;
     StreamContext *nus= &nut->stream[pkt->stream_index];
-    ByteIOContext *bc = &s->pb, dyn_bc;
+    ByteIOContext *bc = s->pb, *dyn_bc;
     FrameCode *fc;
     int64_t coded_pts;
     int best_length, frame_code, flags, needed_flags, i;
     int key_frame = !!(pkt->flags & PKT_FLAG_KEY);
     int store_sp=0;
+    int ret;
 
     if(1LL<<(20+3*nut->header_count) <= url_ftell(bc))
         write_headers(nut, bc);
@@ -472,10 +482,12 @@
         sp= av_tree_find(nut->syncpoints, &dummy, ff_nut_sp_pos_cmp, NULL);
 
         nut->last_syncpoint_pos= url_ftell(bc);
-        url_open_dyn_buf(&dyn_bc);
-        put_t(nut, nus, &dyn_bc, pkt->dts);
-        put_v(&dyn_bc, sp ? (nut->last_syncpoint_pos - sp->pos)>>4 : 0);
-        put_packet(nut, bc, &dyn_bc, 1, SYNCPOINT_STARTCODE);
+        ret = url_open_dyn_buf(&dyn_bc);
+        if(ret < 0)
+            return ret;
+        put_t(nut, nus, dyn_bc, pkt->dts);
+        put_v(dyn_bc, sp ? (nut->last_syncpoint_pos - sp->pos)>>4 : 0);
+        put_packet(nut, bc, dyn_bc, 1, SYNCPOINT_STARTCODE);
 
         ff_nut_add_sp(nut, nut->last_syncpoint_pos, 0/*unused*/, pkt->dts);
     }
@@ -566,7 +578,7 @@
 
 static int write_trailer(AVFormatContext *s){
     NUTContext *nut= s->priv_data;
-    ByteIOContext *bc= &s->pb;
+    ByteIOContext *bc= s->pb;
 
     while(nut->header_count<3)
         write_headers(nut, bc);
--- a/nuv.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/nuv.c	Wed Nov 21 07:41:00 2007 +0000
@@ -120,7 +120,7 @@
 
 static int nuv_header(AVFormatContext *s, AVFormatParameters *ap) {
     NUVContext *ctx = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     char id_string[12], version_string[5];
     double aspect, fps;
     int is_mythtv, width, height, v_packs, a_packs;
@@ -183,7 +183,7 @@
 
 static int nuv_packet(AVFormatContext *s, AVPacket *pkt) {
     NUVContext *ctx = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     uint8_t hdr[HDRSIZE];
     frametype_t frametype;
     int ret, size;
--- a/oggdec.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/oggdec.c	Wed Nov 21 07:41:00 2007 +0000
@@ -56,7 +56,7 @@
     ogg_state_t *ost =
         av_malloc(sizeof (*ost) + (ogg->nstreams-1) * sizeof (*ogg->streams));
     int i;
-    ost->pos = url_ftell (&s->pb);;
+    ost->pos = url_ftell (s->pb);
     ost->curidx = ogg->curidx;
     ost->next = ogg->state;
     ost->nstreams = ogg->nstreams;
@@ -78,7 +78,7 @@
 ogg_restore (AVFormatContext * s, int discard)
 {
     ogg_t *ogg = s->priv_data;
-    ByteIOContext *bc = &s->pb;
+    ByteIOContext *bc = s->pb;
     ogg_state_t *ost = ogg->state;
     int i;
 
@@ -196,7 +196,7 @@
 static int
 ogg_read_page (AVFormatContext * s, int *str)
 {
-    ByteIOContext *bc = &s->pb;
+    ByteIOContext *bc = s->pb;
     ogg_t *ogg = s->priv_data;
     ogg_stream_t *os;
     int i = 0;
@@ -438,20 +438,20 @@
     int idx = -1, i;
     offset_t size, end;
 
-    if(s->pb.is_streamed)
+    if(s->pb->is_streamed)
         return 0;
 
 // already set
     if (s->duration != AV_NOPTS_VALUE)
         return 0;
 
-    size = url_fsize(&s->pb);
+    size = url_fsize(s->pb);
     if(size < 0)
         return 0;
     end = size > MAX_PAGE_SIZE? size - MAX_PAGE_SIZE: size;
 
     ogg_save (s);
-    url_fseek (&s->pb, end, SEEK_SET);
+    url_fseek (s->pb, end, SEEK_SET);
 
     while (!ogg_read_page (s, &i)){
         if (ogg->streams[i].granule != -1 && ogg->streams[i].granule != 0 &&
@@ -552,7 +552,7 @@
                     int64_t pos_limit)
 {
     ogg_t *ogg = s->priv_data;
-    ByteIOContext *bc = &s->pb;
+    ByteIOContext *bc = s->pb;
     int64_t pts = AV_NOPTS_VALUE;
     int i;
     url_fseek(bc, *pos_arg, SEEK_SET);
--- a/oggenc.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/oggenc.c	Wed Nov 21 07:41:00 2007 +0000
@@ -37,11 +37,11 @@
 
 static void ogg_update_checksum(AVFormatContext *s, offset_t crc_offset)
 {
-    offset_t pos = url_ftell(&s->pb);
-    uint32_t checksum = get_checksum(&s->pb);
-    url_fseek(&s->pb, crc_offset, SEEK_SET);
-    put_be32(&s->pb, checksum);
-    url_fseek(&s->pb, pos, SEEK_SET);
+    offset_t pos = url_ftell(s->pb);
+    uint32_t checksum = get_checksum(s->pb);
+    url_fseek(s->pb, crc_offset, SEEK_SET);
+    put_be32(s->pb, checksum);
+    url_fseek(s->pb, pos, SEEK_SET);
 }
 
 static int ogg_write_page(AVFormatContext *s, const uint8_t *data, int size,
@@ -54,24 +54,24 @@
     size = FFMIN(size, 255*255);
     page_segments = FFMIN((size/255)+!!size, 255);
 
-    init_checksum(&s->pb, ff_crc04C11DB7_update, 0);
-    put_tag(&s->pb, "OggS");
-    put_byte(&s->pb, 0);
-    put_byte(&s->pb, flags);
-    put_le64(&s->pb, granule);
-    put_le32(&s->pb, stream_index);
-    put_le32(&s->pb, oggstream->page_counter++);
-    crc_offset = url_ftell(&s->pb);
-    put_le32(&s->pb, 0); // crc
-    put_byte(&s->pb, page_segments);
+    init_checksum(s->pb, ff_crc04C11DB7_update, 0);
+    put_tag(s->pb, "OggS");
+    put_byte(s->pb, 0);
+    put_byte(s->pb, flags);
+    put_le64(s->pb, granule);
+    put_le32(s->pb, stream_index);
+    put_le32(s->pb, oggstream->page_counter++);
+    crc_offset = url_ftell(s->pb);
+    put_le32(s->pb, 0); // crc
+    put_byte(s->pb, page_segments);
     for (i = 0; i < page_segments-1; i++)
-        put_byte(&s->pb, 255);
+        put_byte(s->pb, 255);
     if (size) {
-        put_byte(&s->pb, size - (page_segments-1)*255);
-        put_buffer(&s->pb, data, size);
+        put_byte(s->pb, size - (page_segments-1)*255);
+        put_buffer(s->pb, data, size);
     }
     ogg_update_checksum(s, crc_offset);
-    put_flush_packet(&s->pb);
+    put_flush_packet(s->pb);
     return size;
 }
 
--- a/psxstr.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/psxstr.c	Wed Nov 21 07:41:00 2007 +0000
@@ -125,7 +125,7 @@
 static int str_read_header(AVFormatContext *s,
                            AVFormatParameters *ap)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     StrDemuxContext *str = s->priv_data;
     AVStream *st;
     unsigned char sector[RAW_CD_SECTOR_SIZE];
@@ -249,7 +249,7 @@
 static int str_read_packet(AVFormatContext *s,
                            AVPacket *ret_pkt)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     StrDemuxContext *str = s->priv_data;
     unsigned char sector[RAW_CD_SECTOR_SIZE];
     int channel;
--- a/raw.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/raw.c	Wed Nov 21 07:41:00 2007 +0000
@@ -33,8 +33,8 @@
     uint8_t *streaminfo = s->streams[0]->codec->extradata;
     int len = s->streams[0]->codec->extradata_size;
     if(streaminfo != NULL && len > 0) {
-        put_buffer(&s->pb, header, 8);
-        put_buffer(&s->pb, streaminfo, len);
+        put_buffer(s->pb, header, 8);
+        put_buffer(s->pb, streaminfo, len);
     }
     return 0;
 }
@@ -46,16 +46,16 @@
         0x84, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0x1E, 0x00
     };
 
-    put_buffer(&s->pb, header, 8);
-    put_flush_packet(&s->pb);
+    put_buffer(s->pb, header, 8);
+    put_flush_packet(s->pb);
 
     return 0;
 }
 
 static int raw_write_packet(struct AVFormatContext *s, AVPacket *pkt)
 {
-    put_buffer(&s->pb, pkt->data, pkt->size);
-    put_flush_packet(&s->pb);
+    put_buffer(s->pb, pkt->data, pkt->size);
+    put_flush_packet(s->pb);
     return 0;
 }
 #endif //CONFIG_MUXERS
@@ -107,7 +107,7 @@
 
     size= RAW_PACKET_SIZE;
 
-    ret= av_get_packet(&s->pb, pkt, size);
+    ret= av_get_packet(s->pb, pkt, size);
 
     pkt->stream_index = 0;
     if (ret <= 0) {
@@ -128,9 +128,9 @@
     if (av_new_packet(pkt, size) < 0)
         return AVERROR(EIO);
 
-    pkt->pos= url_ftell(&s->pb);
+    pkt->pos= url_ftell(s->pb);
     pkt->stream_index = 0;
-    ret = get_partial_buffer(&s->pb, pkt->data, size);
+    ret = get_partial_buffer(s->pb, pkt->data, size);
     if (ret <= 0) {
         av_free_packet(pkt);
         return AVERROR(EIO);
@@ -144,19 +144,19 @@
 {
     int ret, size, w, h, unk1, unk2;
 
-    if (get_le32(&s->pb) != MKTAG('M', 'J', 'P', 'G'))
+    if (get_le32(s->pb) != MKTAG('M', 'J', 'P', 'G'))
         return AVERROR(EIO); // FIXME
 
-    size = get_le32(&s->pb);
+    size = get_le32(s->pb);
 
-    w = get_le16(&s->pb);
-    h = get_le16(&s->pb);
+    w = get_le16(s->pb);
+    h = get_le16(s->pb);
 
-    url_fskip(&s->pb, 8); // zero + size (padded?)
-    url_fskip(&s->pb, 2);
-    unk1 = get_le16(&s->pb);
-    unk2 = get_le16(&s->pb);
-    url_fskip(&s->pb, 22); // ascii timestamp
+    url_fskip(s->pb, 8); // zero + size (padded?)
+    url_fskip(s->pb, 2);
+    unk1 = get_le16(s->pb);
+    unk2 = get_le16(s->pb);
+    url_fskip(s->pb, 22); // ascii timestamp
 
     av_log(NULL, AV_LOG_DEBUG, "Ingenient packet: size=%d, width=%d, height=%d, unk1=%d unk2=%d\n",
         size, w, h, unk1, unk2);
@@ -164,9 +164,9 @@
     if (av_new_packet(pkt, size) < 0)
         return AVERROR(EIO);
 
-    pkt->pos = url_ftell(&s->pb);
+    pkt->pos = url_ftell(s->pb);
     pkt->stream_index = 0;
-    ret = get_buffer(&s->pb, pkt->data, size);
+    ret = get_buffer(s->pb, pkt->data, size);
     if (ret <= 0) {
         av_free_packet(pkt);
         return AVERROR(EIO);
@@ -206,7 +206,7 @@
 
     /* recompute exact position */
     st->cur_dts = av_rescale(pos, st->time_base.den, byte_rate * (int64_t)st->time_base.num);
-    url_fseek(&s->pb, pos + s->data_offset, SEEK_SET);
+    url_fseek(s->pb, pos + s->data_offset, SEEK_SET);
     return 0;
 }
 
@@ -843,7 +843,7 @@
     if (packet_size < 0)
         return -1;
 
-    ret= av_get_packet(&s->pb, pkt, packet_size);
+    ret= av_get_packet(s->pb, pkt, packet_size);
 
     pkt->stream_index = 0;
     if (ret != packet_size) {
--- a/rmdec.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/rmdec.c	Wed Nov 21 07:41:00 2007 +0000
@@ -50,7 +50,7 @@
                                       int read_all)
 {
     RMContext *rm = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     char buf[256];
     uint32_t version;
     int i;
@@ -191,7 +191,7 @@
 static int
 ff_rm_read_mdpr_codecdata (AVFormatContext *s, AVStream *st)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     unsigned int v;
     int codec_data_size, size;
     int64_t codec_pos;
@@ -272,7 +272,7 @@
 {
     RMContext *rm = s->priv_data;
     AVStream *st;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     unsigned int tag;
     int tag_size, i;
     unsigned int start_time, duration;
@@ -395,7 +395,7 @@
 
 static int sync(AVFormatContext *s, int64_t *timestamp, int *flags, int *stream_index, int64_t *pos){
     RMContext *rm = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int len, num, res, i;
     AVStream *st;
     uint32_t state=0xFFFFFFFF;
@@ -451,7 +451,7 @@
 
 static int rm_assemble_video_frame(AVFormatContext *s, RMContext *rm, AVPacket *pkt, int len)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int hdr, seq, pic_num, len2, pos;
     int type;
 
@@ -550,7 +550,7 @@
 ff_rm_parse_packet (AVFormatContext *s, AVStream *st, int len, AVPacket *pkt,
                     int *seq, int *flags, int64_t *timestamp)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     RMContext *rm = s->priv_data;
 
     if (st->codec->codec_type == CODEC_TYPE_VIDEO) {
@@ -647,7 +647,7 @@
 static void
 ff_rm_retrieve_cache (AVFormatContext *s, AVStream *st, AVPacket *pkt)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     RMContext *rm = s->priv_data;
 
     assert (rm->audio_pkt_cnt > 0);
@@ -668,7 +668,7 @@
 static int rm_read_packet(AVFormatContext *s, AVPacket *pkt)
 {
     RMContext *rm = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVStream *st;
     int i, len;
     int64_t timestamp, pos;
@@ -759,7 +759,7 @@
     if(rm->old_format)
         return AV_NOPTS_VALUE;
 
-    url_fseek(&s->pb, pos, SEEK_SET);
+    url_fseek(s->pb, pos, SEEK_SET);
     rm->remaining_len=0;
     for(;;){
         int seq=1;
@@ -771,9 +771,9 @@
 
         st = s->streams[stream_index2];
         if (st->codec->codec_type == CODEC_TYPE_VIDEO) {
-            h= get_byte(&s->pb); len--;
+            h= get_byte(s->pb); len--;
             if(!(h & 0x40)){
-                seq = get_byte(&s->pb); len--;
+                seq = get_byte(s->pb); len--;
             }
         }
 
@@ -784,7 +784,7 @@
                 break;
         }
 
-        url_fskip(&s->pb, len);
+        url_fskip(s->pb, len);
     }
     *ppos = pos;
     return dts;
--- a/rmenc.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/rmenc.c	Wed Nov 21 07:41:00 2007 +0000
@@ -45,7 +45,7 @@
                               int data_size, int index_pos)
 {
     RMContext *rm = ctx->priv_data;
-    ByteIOContext *s = &ctx->pb;
+    ByteIOContext *s = ctx->pb;
     StreamInfo *stream;
     unsigned char *data_offset_ptr, *start_ptr;
     const char *desc, *mimetype;
@@ -253,7 +253,7 @@
                                 int length, int key_frame)
 {
     int timestamp;
-    ByteIOContext *s = &ctx->pb;
+    ByteIOContext *s = ctx->pb;
 
     stream->nb_packets++;
     stream->packet_total_size += length;
@@ -308,7 +308,7 @@
     }
 
     rv10_write_header(s, 0, 0);
-    put_flush_packet(&s->pb);
+    put_flush_packet(s->pb);
     return 0;
 }
 
@@ -316,7 +316,7 @@
 {
     uint8_t *buf1;
     RMContext *rm = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     StreamInfo *stream = rm->audio_stream;
     int i;
 
@@ -340,7 +340,7 @@
 static int rm_write_video(AVFormatContext *s, const uint8_t *buf, int size, int flags)
 {
     RMContext *rm = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     StreamInfo *stream = rm->video_stream;
     int key_frame = !!(flags & PKT_FLAG_KEY);
 
@@ -390,9 +390,9 @@
 {
     RMContext *rm = s->priv_data;
     int data_size, index_pos, i;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
 
-    if (!url_is_streamed(&s->pb)) {
+    if (!url_is_streamed(s->pb)) {
         /* end of file: finish to write header */
         index_pos = url_fseek(pb, 0, SEEK_CUR);
         data_size = index_pos - rm->data_pos;
--- a/rtp.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/rtp.c	Wed Nov 21 07:41:00 2007 +0000
@@ -360,7 +360,7 @@
 
 int rtp_check_and_send_back_rr(RTPDemuxContext *s, int count)
 {
-    ByteIOContext pb;
+    ByteIOContext *pb;
     uint8_t *buf;
     int len;
     int rtcp_bytes;
@@ -391,11 +391,11 @@
         return -1;
 
     // Receiver Report
-    put_byte(&pb, (RTP_VERSION << 6) + 1); /* 1 report block */
-    put_byte(&pb, 201);
-    put_be16(&pb, 7); /* length in words - 1 */
-    put_be32(&pb, s->ssrc); // our own SSRC
-    put_be32(&pb, s->ssrc); // XXX: should be the server's here!
+    put_byte(pb, (RTP_VERSION << 6) + 1); /* 1 report block */
+    put_byte(pb, 201);
+    put_be16(pb, 7); /* length in words - 1 */
+    put_be32(pb, s->ssrc); // our own SSRC
+    put_be32(pb, s->ssrc); // XXX: should be the server's here!
     // some placeholders we should really fill...
     // RFC 1889/p64
     extended_max= stats->cycles + stats->max_seq;
@@ -412,38 +412,38 @@
 
     fraction= (fraction<<24) | lost;
 
-    put_be32(&pb, fraction); /* 8 bits of fraction, 24 bits of total packets lost */
-    put_be32(&pb, extended_max); /* max sequence received */
-    put_be32(&pb, stats->jitter>>4); /* jitter */
+    put_be32(pb, fraction); /* 8 bits of fraction, 24 bits of total packets lost */
+    put_be32(pb, extended_max); /* max sequence received */
+    put_be32(pb, stats->jitter>>4); /* jitter */
 
     if(s->last_rtcp_ntp_time==AV_NOPTS_VALUE)
     {
-        put_be32(&pb, 0); /* last SR timestamp */
-        put_be32(&pb, 0); /* delay since last SR */
+        put_be32(pb, 0); /* last SR timestamp */
+        put_be32(pb, 0); /* delay since last SR */
     } else {
         uint32_t middle_32_bits= s->last_rtcp_ntp_time>>16; // this is valid, right? do we need to handle 64 bit values special?
         uint32_t delay_since_last= ntp_time - s->last_rtcp_ntp_time;
 
-        put_be32(&pb, middle_32_bits); /* last SR timestamp */
-        put_be32(&pb, delay_since_last); /* delay since last SR */
+        put_be32(pb, middle_32_bits); /* last SR timestamp */
+        put_be32(pb, delay_since_last); /* delay since last SR */
     }
 
     // CNAME
-    put_byte(&pb, (RTP_VERSION << 6) + 1); /* 1 report block */
-    put_byte(&pb, 202);
+    put_byte(pb, (RTP_VERSION << 6) + 1); /* 1 report block */
+    put_byte(pb, 202);
     len = strlen(s->hostname);
-    put_be16(&pb, (6 + len + 3) / 4); /* length in words - 1 */
-    put_be32(&pb, s->ssrc);
-    put_byte(&pb, 0x01);
-    put_byte(&pb, len);
-    put_buffer(&pb, s->hostname, len);
+    put_be16(pb, (6 + len + 3) / 4); /* length in words - 1 */
+    put_be32(pb, s->ssrc);
+    put_byte(pb, 0x01);
+    put_byte(pb, len);
+    put_buffer(pb, s->hostname, len);
     // padding
     for (len = (6 + len) % 4; len % 4; len++) {
-        put_byte(&pb, 0);
+        put_byte(pb, 0);
     }
 
-    put_flush_packet(&pb);
-    len = url_close_dyn_buf(&pb, &buf);
+    put_flush_packet(pb);
+    len = url_close_dyn_buf(pb, &buf);
     if ((len > 0) && buf) {
         int result;
 #if defined(DEBUG)
@@ -775,7 +775,7 @@
     s->first_packet = 1;
     s->first_rtcp_ntp_time = AV_NOPTS_VALUE;
 
-    max_packet_size = url_fget_max_packet_size(&s1->pb);
+    max_packet_size = url_fget_max_packet_size(s1->pb);
     if (max_packet_size <= 12)
         return AVERROR(EIO);
     s->max_payload_size = max_packet_size - 12;
@@ -838,16 +838,16 @@
     s->last_rtcp_ntp_time = ntp_time;
     rtp_ts = av_rescale_q(ntp_time - s->first_rtcp_ntp_time, AV_TIME_BASE_Q,
                           s1->streams[0]->time_base) + s->base_timestamp;
-    put_byte(&s1->pb, (RTP_VERSION << 6));
-    put_byte(&s1->pb, 200);
-    put_be16(&s1->pb, 6); /* length in words - 1 */
-    put_be32(&s1->pb, s->ssrc);
-    put_be32(&s1->pb, ntp_time / 1000000);
-    put_be32(&s1->pb, ((ntp_time % 1000000) << 32) / 1000000);
-    put_be32(&s1->pb, rtp_ts);
-    put_be32(&s1->pb, s->packet_count);
-    put_be32(&s1->pb, s->octet_count);
-    put_flush_packet(&s1->pb);
+    put_byte(s1->pb, (RTP_VERSION << 6));
+    put_byte(s1->pb, 200);
+    put_be16(s1->pb, 6); /* length in words - 1 */
+    put_be32(s1->pb, s->ssrc);
+    put_be32(s1->pb, ntp_time / 1000000);
+    put_be32(s1->pb, ((ntp_time % 1000000) << 32) / 1000000);
+    put_be32(s1->pb, rtp_ts);
+    put_be32(s1->pb, s->packet_count);
+    put_be32(s1->pb, s->octet_count);
+    put_flush_packet(s1->pb);
 }
 
 /* send an rtp packet. sequence number is incremented, but the caller
@@ -861,14 +861,14 @@
 #endif
 
     /* build the RTP header */
-    put_byte(&s1->pb, (RTP_VERSION << 6));
-    put_byte(&s1->pb, (s->payload_type & 0x7f) | ((m & 0x01) << 7));
-    put_be16(&s1->pb, s->seq);
-    put_be32(&s1->pb, s->timestamp);
-    put_be32(&s1->pb, s->ssrc);
+    put_byte(s1->pb, (RTP_VERSION << 6));
+    put_byte(s1->pb, (s->payload_type & 0x7f) | ((m & 0x01) << 7));
+    put_be16(s1->pb, s->seq);
+    put_be32(s1->pb, s->timestamp);
+    put_be32(s1->pb, s->ssrc);
 
-    put_buffer(&s1->pb, buf1, len);
-    put_flush_packet(&s1->pb);
+    put_buffer(s1->pb, buf1, len);
+    put_flush_packet(s1->pb);
 
     s->seq++;
     s->octet_count += len;
--- a/rtsp.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/rtsp.c	Wed Nov 21 07:41:00 2007 +0000
@@ -1351,7 +1351,7 @@
     /* read the whole sdp file */
     /* XXX: better loading */
     content = av_malloc(SDP_MAX_SIZE);
-    size = get_buffer(&s->pb, content, SDP_MAX_SIZE - 1);
+    size = get_buffer(s->pb, content, SDP_MAX_SIZE - 1);
     if (size <= 0) {
         av_free(content);
         return AVERROR_INVALIDDATA;
--- a/segafilm.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/segafilm.c	Wed Nov 21 07:41:00 2007 +0000
@@ -76,7 +76,7 @@
                             AVFormatParameters *ap)
 {
     FilmDemuxContext *film = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVStream *st;
     unsigned char scratch[256];
     int i;
@@ -204,7 +204,7 @@
                             AVPacket *pkt)
 {
     FilmDemuxContext *film = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     film_sample_t *sample;
     int ret = 0;
     int i;
--- a/sierravmd.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/sierravmd.c	Wed Nov 21 07:41:00 2007 +0000
@@ -72,7 +72,7 @@
                            AVFormatParameters *ap)
 {
     VmdDemuxContext *vmd = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVStream *st, *vst;
     unsigned int toc_offset;
     unsigned char *raw_frame_table;
@@ -245,7 +245,7 @@
                            AVPacket *pkt)
 {
     VmdDemuxContext *vmd = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int ret = 0;
     vmd_frame_t *frame;
 
--- a/siff.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/siff.c	Wed Nov 21 07:41:00 2007 +0000
@@ -153,7 +153,7 @@
 
 static int siff_read_header(AVFormatContext *s, AVFormatParameters *ap)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     SIFFContext *c = s->priv_data;
     uint32_t tag;
 
@@ -189,12 +189,12 @@
         if (c->cur_frame >= c->frames)
             return AVERROR(EIO);
         if (c->curstrm == -1){
-            c->pktsize = get_le32(&s->pb) - 4;
-            c->flags = get_le16(&s->pb);
+            c->pktsize = get_le32(s->pb) - 4;
+            c->flags = get_le16(s->pb);
             c->gmcsize = (c->flags & VB_HAS_GMC) ? 4 : 0;
             if (c->gmcsize)
-                get_buffer(&s->pb, c->gmc, c->gmcsize);
-            c->sndsize = (c->flags & VB_HAS_AUDIO) ? get_le32(&s->pb): 0;
+                get_buffer(s->pb, c->gmc, c->gmcsize);
+            c->sndsize = (c->flags & VB_HAS_AUDIO) ? get_le32(s->pb): 0;
             c->curstrm = !!(c->flags & VB_HAS_AUDIO);
         }
 
@@ -205,11 +205,11 @@
             AV_WL16(pkt->data, c->flags);
             if (c->gmcsize)
                 memcpy(pkt->data + 2, c->gmc, c->gmcsize);
-            get_buffer(&s->pb, pkt->data + 2 + c->gmcsize, size - c->gmcsize - 2);
+            get_buffer(s->pb, pkt->data + 2 + c->gmcsize, size - c->gmcsize - 2);
             pkt->stream_index = 0;
             c->curstrm = -1;
         }else{
-            if (av_get_packet(&s->pb, pkt, c->sndsize - 4) < 0)
+            if (av_get_packet(s->pb, pkt, c->sndsize - 4) < 0)
                 return AVERROR(EIO);
             pkt->stream_index = 1;
             c->curstrm = 0;
@@ -219,7 +219,7 @@
         if (c->curstrm == -1)
             c->cur_frame++;
     }else{
-        size = av_get_packet(&s->pb, pkt, c->block_align);
+        size = av_get_packet(s->pb, pkt, c->block_align);
         if(size <= 0)
             return AVERROR(EIO);
     }
--- a/smacker.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/smacker.c	Wed Nov 21 07:41:00 2007 +0000
@@ -98,7 +98,7 @@
 
 static int smacker_read_header(AVFormatContext *s, AVFormatParameters *ap)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     SmackerContext *smk = s->priv_data;
     AVStream *st, *ast[7];
     int i, ret;
@@ -226,35 +226,35 @@
     int palchange = 0;
     int pos;
 
-    if (url_feof(&s->pb) || smk->cur_frame >= smk->frames)
+    if (url_feof(s->pb) || smk->cur_frame >= smk->frames)
         return AVERROR(EIO);
 
     /* if we demuxed all streams, pass another frame */
     if(smk->curstream < 0) {
-        url_fseek(&s->pb, smk->nextpos, 0);
+        url_fseek(s->pb, smk->nextpos, 0);
         frame_size = smk->frm_size[smk->cur_frame] & (~3);
         flags = smk->frm_flags[smk->cur_frame];
         /* handle palette change event */
-        pos = url_ftell(&s->pb);
+        pos = url_ftell(s->pb);
         if(flags & SMACKER_PAL){
             int size, sz, t, off, j, pos;
             uint8_t *pal = smk->pal;
             uint8_t oldpal[768];
 
             memcpy(oldpal, pal, 768);
-            size = get_byte(&s->pb);
+            size = get_byte(s->pb);
             size = size * 4 - 1;
             frame_size -= size;
             frame_size--;
             sz = 0;
-            pos = url_ftell(&s->pb) + size;
+            pos = url_ftell(s->pb) + size;
             while(sz < 256){
-                t = get_byte(&s->pb);
+                t = get_byte(s->pb);
                 if(t & 0x80){ /* skip palette entries */
                     sz += (t & 0x7F) + 1;
                     pal += ((t & 0x7F) + 1) * 3;
                 } else if(t & 0x40){ /* copy with offset */
-                    off = get_byte(&s->pb) * 3;
+                    off = get_byte(s->pb) * 3;
                     j = (t & 0x3F) + 1;
                     while(j-- && sz < 256) {
                         *pal++ = oldpal[off + 0];
@@ -265,12 +265,12 @@
                     }
                 } else { /* new entries */
                     *pal++ = smk_pal[t];
-                    *pal++ = smk_pal[get_byte(&s->pb) & 0x3F];
-                    *pal++ = smk_pal[get_byte(&s->pb) & 0x3F];
+                    *pal++ = smk_pal[get_byte(s->pb) & 0x3F];
+                    *pal++ = smk_pal[get_byte(s->pb) & 0x3F];
                     sz++;
                 }
             }
-            url_fseek(&s->pb, pos, 0);
+            url_fseek(s->pb, pos, 0);
             palchange |= 1;
         }
         flags >>= 1;
@@ -279,13 +279,13 @@
         for(i = 0; i < 7; i++) {
             if(flags & 1) {
                 int size;
-                size = get_le32(&s->pb) - 4;
+                size = get_le32(s->pb) - 4;
                 frame_size -= size;
                 frame_size -= 4;
                 smk->curstream++;
                 smk->bufs[smk->curstream] = av_realloc(smk->bufs[smk->curstream], size);
                 smk->buf_sizes[smk->curstream] = size;
-                ret = get_buffer(&s->pb, smk->bufs[smk->curstream], size);
+                ret = get_buffer(s->pb, smk->bufs[smk->curstream], size);
                 if(ret != size)
                     return AVERROR(EIO);
                 smk->stream_id[smk->curstream] = smk->indexes[i];
@@ -298,13 +298,13 @@
             palchange |= 2;
         pkt->data[0] = palchange;
         memcpy(pkt->data + 1, smk->pal, 768);
-        ret = get_buffer(&s->pb, pkt->data + 769, frame_size);
+        ret = get_buffer(s->pb, pkt->data + 769, frame_size);
         if(ret != frame_size)
             return AVERROR(EIO);
         pkt->stream_index = smk->videoindex;
         pkt->size = ret + 769;
         smk->cur_frame++;
-        smk->nextpos = url_ftell(&s->pb);
+        smk->nextpos = url_ftell(s->pb);
     } else {
         if (av_new_packet(pkt, smk->buf_sizes[smk->curstream]))
             return AVERROR(ENOMEM);
--- a/sol.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/sol.c	Wed Nov 21 07:41:00 2007 +0000
@@ -88,7 +88,7 @@
 {
     int size;
     unsigned int magic,tag;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     unsigned int id, codec, channels, rate, type;
     AVStream *st;
 
@@ -130,9 +130,9 @@
 {
     int ret;
 
-    if (url_feof(&s->pb))
+    if (url_feof(s->pb))
         return AVERROR(EIO);
-    ret= av_get_packet(&s->pb, pkt, MAX_SIZE);
+    ret= av_get_packet(s->pb, pkt, MAX_SIZE);
     pkt->stream_index = 0;
 
     /* note: we need to modify the packet size here to handle the last
--- a/swf.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/swf.c	Wed Nov 21 07:41:00 2007 +0000
@@ -96,7 +96,7 @@
 static void put_swf_tag(AVFormatContext *s, int tag)
 {
     SWFContext *swf = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
 
     swf->tag_pos = url_ftell(pb);
     swf->tag = tag;
@@ -112,7 +112,7 @@
 static void put_swf_end_tag(AVFormatContext *s)
 {
     SWFContext *swf = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     offset_t pos;
     int tag_len, tag;
 
@@ -244,7 +244,7 @@
 static int swf_write_header(AVFormatContext *s)
 {
     SWFContext *swf = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVCodecContext *enc, *audio_enc, *video_enc;
     PutBitContext p;
     uint8_t buf1[256];
@@ -392,16 +392,16 @@
         v |= 0x02; /* 16 bit playback */
         if (audio_enc->channels == 2)
             v |= 0x01; /* stereo playback */
-        put_byte(&s->pb, v);
+        put_byte(s->pb, v);
         v |= 0x20; /* mp3 compressed */
-        put_byte(&s->pb, v);
-        put_le16(&s->pb, swf->samples_per_frame);  /* avg samples per frame */
-        put_le16(&s->pb, 0);
+        put_byte(s->pb, v);
+        put_le16(s->pb, swf->samples_per_frame);  /* avg samples per frame */
+        put_le16(s->pb, 0);
 
         put_swf_end_tag(s);
     }
 
-    put_flush_packet(&s->pb);
+    put_flush_packet(s->pb);
     return 0;
 }
 
@@ -409,7 +409,7 @@
                            AVCodecContext *enc, const uint8_t *buf, int size)
 {
     SWFContext *swf = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
 
     /* Flash Player limit */
     if (swf->swf_frame_number == 16000) {
@@ -516,7 +516,7 @@
     put_swf_tag(s, TAG_SHOWFRAME);
     put_swf_end_tag(s);
 
-    put_flush_packet(&s->pb);
+    put_flush_packet(s->pb);
 
     return 0;
 }
@@ -560,7 +560,7 @@
 static int swf_write_trailer(AVFormatContext *s)
 {
     SWFContext *swf = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVCodecContext *enc, *video_enc;
     int file_size, i;
 
@@ -574,10 +574,10 @@
     put_swf_tag(s, TAG_END);
     put_swf_end_tag(s);
 
-    put_flush_packet(&s->pb);
+    put_flush_packet(s->pb);
 
     /* patch file size and number of frames if not streamed */
-    if (!url_is_streamed(&s->pb) && video_enc) {
+    if (!url_is_streamed(s->pb) && video_enc) {
         file_size = url_ftell(pb);
         url_fseek(pb, 4, SEEK_SET);
         put_le32(pb, file_size);
@@ -628,7 +628,7 @@
 static int swf_read_header(AVFormatContext *s, AVFormatParameters *ap)
 {
     SWFContext *swf = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int nbits, len, tag;
 
     tag = get_be32(pb) & 0xffffff00;
@@ -655,7 +655,7 @@
 static int swf_read_packet(AVFormatContext *s, AVPacket *pkt)
 {
     SWFContext *swf = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVStream *vst = NULL, *ast = NULL, *st = 0;
     int tag, len, i, frame, v;
 
--- a/thp.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/thp.c	Wed Nov 21 07:41:00 2007 +0000
@@ -57,7 +57,7 @@
 {
     ThpDemuxContext *thp = s->priv_data;
     AVStream *st;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int i;
 
     /* Read the file header.  */
@@ -140,7 +140,7 @@
                             AVPacket *pkt)
 {
     ThpDemuxContext *thp = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int size;
     int ret;
 
--- a/tiertexseq.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/tiertexseq.c	Wed Nov 21 07:41:00 2007 +0000
@@ -184,7 +184,7 @@
 {
     int i, rc;
     SeqDemuxContext *seq = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVStream *st;
 
     /* init internal buffers */
@@ -241,7 +241,7 @@
 {
     int rc;
     SeqDemuxContext *seq = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
 
     if (!seq->audio_buffer_full) {
         rc = seq_parse_frame_data(seq, pb);
--- a/tta.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/tta.c	Wed Nov 21 07:41:00 2007 +0000
@@ -40,25 +40,25 @@
     int i, channels, bps, samplerate, datalen, framelen;
     uint64_t framepos;
 
-    if (get_le32(&s->pb) != ff_get_fourcc("TTA1"))
+    if (get_le32(s->pb) != ff_get_fourcc("TTA1"))
         return -1; // not tta file
 
-    url_fskip(&s->pb, 2); // FIXME: flags
-    channels = get_le16(&s->pb);
-    bps = get_le16(&s->pb);
-    samplerate = get_le32(&s->pb);
+    url_fskip(s->pb, 2); // FIXME: flags
+    channels = get_le16(s->pb);
+    bps = get_le16(s->pb);
+    samplerate = get_le32(s->pb);
     if(samplerate <= 0 || samplerate > 1000000){
         av_log(s, AV_LOG_ERROR, "nonsense samplerate\n");
         return -1;
     }
 
-    datalen = get_le32(&s->pb);
+    datalen = get_le32(s->pb);
     if(datalen < 0){
         av_log(s, AV_LOG_ERROR, "nonsense datalen\n");
         return -1;
     }
 
-    url_fskip(&s->pb, 4); // header crc
+    url_fskip(s->pb, 4); // header crc
 
     framelen = samplerate*256/245;
     c->totalframes = datalen / framelen + ((datalen % framelen) ? 1 : 0);
@@ -77,14 +77,14 @@
     st->start_time = 0;
     st->duration = datalen;
 
-    framepos = url_ftell(&s->pb) + 4*c->totalframes + 4;
+    framepos = url_ftell(s->pb) + 4*c->totalframes + 4;
 
     for (i = 0; i < c->totalframes; i++) {
-        uint32_t size = get_le32(&s->pb);
+        uint32_t size = get_le32(s->pb);
         av_add_index_entry(st, framepos, i*framelen, size, 0, AVINDEX_KEYFRAME);
         framepos += size;
     }
-    url_fskip(&s->pb, 4); // seektable crc
+    url_fskip(s->pb, 4); // seektable crc
 
     st->codec->codec_type = CODEC_TYPE_AUDIO;
     st->codec->codec_id = CODEC_ID_TTA;
@@ -92,15 +92,15 @@
     st->codec->sample_rate = samplerate;
     st->codec->bits_per_sample = bps;
 
-    st->codec->extradata_size = url_ftell(&s->pb);
+    st->codec->extradata_size = url_ftell(s->pb);
     if(st->codec->extradata_size+FF_INPUT_BUFFER_PADDING_SIZE <= (unsigned)st->codec->extradata_size){
         //this check is redundant as get_buffer should fail
         av_log(s, AV_LOG_ERROR, "extradata_size too large\n");
         return -1;
     }
     st->codec->extradata = av_mallocz(st->codec->extradata_size+FF_INPUT_BUFFER_PADDING_SIZE);
-    url_fseek(&s->pb, 0, SEEK_SET);
-    get_buffer(&s->pb, st->codec->extradata, st->codec->extradata_size);
+    url_fseek(s->pb, 0, SEEK_SET);
+    get_buffer(s->pb, st->codec->extradata, st->codec->extradata_size);
 
     return 0;
 }
@@ -117,7 +117,7 @@
 
     size = st->index_entries[c->currentframe].size;
 
-    ret = av_get_packet(&s->pb, pkt, size);
+    ret = av_get_packet(s->pb, pkt, size);
     pkt->dts = st->index_entries[c->currentframe++].timestamp;
     return ret;
 }
@@ -131,7 +131,7 @@
         return -1;
 
     c->currentframe = index;
-    url_fseek(&s->pb, st->index_entries[index].pos, SEEK_SET);
+    url_fseek(s->pb, st->index_entries[index].pos, SEEK_SET);
 
     return 0;
 }
--- a/txd.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/txd.c	Wed Nov 21 07:41:00 2007 +0000
@@ -51,7 +51,7 @@
 }
 
 static int txd_read_packet(AVFormatContext *s, AVPacket *pkt) {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     unsigned int id, chunk_size, marker;
     int ret;
 
@@ -60,7 +60,7 @@
     chunk_size = get_le32(pb);
     marker     = get_le32(pb);
 
-    if (url_feof(&s->pb))
+    if (url_feof(s->pb))
         return AVERROR(EIO);
     if (marker != TXD_MARKER && marker != TXD_MARKER2) {
         av_log(NULL, AV_LOG_ERROR, "marker does not match\n");
@@ -72,7 +72,7 @@
             if (chunk_size > 100)
                 break;
         case TXD_EXTRA:
-            url_fskip(&s->pb, chunk_size);
+            url_fskip(s->pb, chunk_size);
         case TXD_FILE:
         case TXD_TEXTURE:
             goto next_chunk;
@@ -81,7 +81,7 @@
             return AVERROR(EIO);
     }
 
-    ret = av_get_packet(&s->pb, pkt, chunk_size);
+    ret = av_get_packet(s->pb, pkt, chunk_size);
     pkt->stream_index = 0;
 
     return ret <= 0 ? AVERROR(EIO) : ret;
--- a/utils.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/utils.c	Wed Nov 21 07:41:00 2007 +0000
@@ -361,8 +361,7 @@
         goto fail;
     }
     ic->iformat = fmt;
-    if (pb)
-        ic->pb = *pb;
+    ic->pb = pb;
     ic->duration = AV_NOPTS_VALUE;
     ic->start_time = AV_NOPTS_VALUE;
     av_strlcpy(ic->filename, filename, sizeof(ic->filename));
@@ -383,7 +382,7 @@
         goto fail;
 
     if (pb && !ic->data_offset)
-        ic->data_offset = url_ftell(&ic->pb);
+        ic->data_offset = url_ftell(ic->pb);
 
     *ic_ptr = ic;
     return 0;
@@ -407,7 +406,7 @@
 {
     int err, must_open_file, file_opened, probe_size;
     AVProbeData probe_data, *pd = &probe_data;
-    ByteIOContext pb1, *pb = &pb1;
+    ByteIOContext *pb;
 
     file_opened = 0;
     pd->filename = "";
@@ -431,7 +430,7 @@
 
     if (!fmt || must_open_file) {
         /* if no file needed do not try to open one */
-        if ((err=url_fopen(pb, filename, URL_RDONLY)) < 0) {
+        if ((err=url_fopen(&pb, filename, URL_RDONLY)) < 0) {
             goto fail;
         }
         file_opened = 1;
@@ -447,7 +446,7 @@
             memset(pd->buf+pd->buf_size, 0, AVPROBE_PADDING_SIZE);
             if (url_fseek(pb, 0, SEEK_SET) < 0) {
                 url_fclose(pb);
-                if (url_fopen(pb, filename, URL_RDONLY) < 0) {
+                if (url_fopen(&pb, filename, URL_RDONLY) < 0) {
                     file_opened = 0;
                     err = AVERROR(EIO);
                     goto fail;
@@ -1130,7 +1129,7 @@
         return -1;
 
     /* do the seek */
-    url_fseek(&s->pb, pos, SEEK_SET);
+    url_fseek(s->pb, pos, SEEK_SET);
 
     av_update_cur_dts(s, st, ts);
 
@@ -1155,7 +1154,7 @@
 
     if(ts_max == AV_NOPTS_VALUE){
         int step= 1024;
-        filesize = url_fsize(&s->pb);
+        filesize = url_fsize(s->pb);
         pos_max = filesize - 1;
         do{
             pos_max -= step;
@@ -1261,12 +1260,12 @@
 #endif
 
     pos_min = s->data_offset;
-    pos_max = url_fsize(&s->pb) - 1;
+    pos_max = url_fsize(s->pb) - 1;
 
     if     (pos < pos_min) pos= pos_min;
     else if(pos > pos_max) pos= pos_max;
 
-    url_fseek(&s->pb, pos, SEEK_SET);
+    url_fseek(s->pb, pos, SEEK_SET);
 
 #if 0
     av_update_cur_dts(s, st, ts);
@@ -1291,10 +1290,10 @@
 
         if(st->index_entries && st->nb_index_entries){
             ie= &st->index_entries[st->nb_index_entries-1];
-            url_fseek(&s->pb, ie->pos, SEEK_SET);
+            url_fseek(s->pb, ie->pos, SEEK_SET);
             av_update_cur_dts(s, st, ie->timestamp);
         }else
-            url_fseek(&s->pb, 0, SEEK_SET);
+            url_fseek(s->pb, 0, SEEK_SET);
 
         for(i=0;; i++) {
             int ret = av_read_frame(s, &pkt);
@@ -1317,7 +1316,7 @@
             return 0;
     }
     ie = &st->index_entries[index];
-    url_fseek(&s->pb, ie->pos, SEEK_SET);
+    url_fseek(s->pb, ie->pos, SEEK_SET);
 
     av_update_cur_dts(s, st, ie->timestamp);
 
@@ -1509,7 +1508,7 @@
 
     /* we read the first packets to get the first PTS (not fully
        accurate, but it is enough now) */
-    url_fseek(&ic->pb, 0, SEEK_SET);
+    url_fseek(ic->pb, 0, SEEK_SET);
     read_size = 0;
     for(;;) {
         if (read_size >= DURATION_MAX_READ_SIZE)
@@ -1542,7 +1541,7 @@
     if (offset < 0)
         offset = 0;
 
-    url_fseek(&ic->pb, offset, SEEK_SET);
+    url_fseek(ic->pb, offset, SEEK_SET);
     read_size = 0;
     for(;;) {
         if (read_size >= DURATION_MAX_READ_SIZE)
@@ -1568,7 +1567,7 @@
 
     fill_all_stream_timings(ic);
 
-    url_fseek(&ic->pb, old_offset, SEEK_SET);
+    url_fseek(ic->pb, old_offset, SEEK_SET);
     for(i=0; i<ic->nb_streams; i++){
         st= ic->streams[i];
         st->cur_dts= st->first_dts;
@@ -1584,7 +1583,7 @@
     if (ic->iformat->flags & AVFMT_NOFILE) {
         file_size = 0;
     } else {
-        file_size = url_fsize(&ic->pb);
+        file_size = url_fsize(ic->pb);
         if (file_size < 0)
             file_size = 0;
     }
@@ -1592,7 +1591,7 @@
 
     if ((!strcmp(ic->iformat->name, "mpeg") ||
          !strcmp(ic->iformat->name, "mpegts")) &&
-        file_size && !ic->pb.is_streamed) {
+        file_size && !ic->pb->is_streamed) {
         /* get accurate estimate from the PTSes */
         av_estimate_timings_from_pts(ic, old_offset);
     } else if (av_has_duration(ic)) {
@@ -1757,7 +1756,7 @@
     int64_t last_dts[MAX_STREAMS];
     int duration_count[MAX_STREAMS]={0};
     double (*duration_error)[MAX_STD_TIMEBASES];
-    offset_t old_offset = url_ftell(&ic->pb);
+    offset_t old_offset = url_ftell(ic->pb);
     int64_t codec_info_duration[MAX_STREAMS]={0};
     int codec_info_nb_frames[MAX_STREAMS]={0};
     AVProbeData probe_data[MAX_STREAMS];
@@ -1989,7 +1988,7 @@
             }
             st->cur_dts= st->first_dts;
         }
-        url_fseek(&ic->pb, ic->data_offset, SEEK_SET);
+        url_fseek(ic->pb, ic->data_offset, SEEK_SET);
     }
 
 #if 0
@@ -2075,7 +2074,7 @@
         must_open_file = 0;
     }
     if (must_open_file) {
-        url_fclose(&s->pb);
+        url_fclose(s->pb);
     }
     av_freep(&s->priv_data);
     av_free(s);
@@ -2343,7 +2342,7 @@
 
     ret= s->oformat->write_packet(s, pkt);
     if(!ret)
-        ret= url_ferror(&s->pb);
+        ret= url_ferror(s->pb);
     return ret;
 }
 
@@ -2444,8 +2443,8 @@
 
         if(ret<0)
             return ret;
-        if(url_ferror(&s->pb))
-            return url_ferror(&s->pb);
+        if(url_ferror(s->pb))
+            return url_ferror(s->pb);
     }
 }
 
@@ -2468,7 +2467,7 @@
 
         if(ret<0)
             goto fail;
-        if(url_ferror(&s->pb))
+        if(url_ferror(s->pb))
             goto fail;
     }
 
@@ -2476,7 +2475,7 @@
         ret = s->oformat->write_trailer(s);
 fail:
     if(ret == 0)
-       ret=url_ferror(&s->pb);
+       ret=url_ferror(s->pb);
     for(i=0;i<s->nb_streams;i++)
         av_freep(&s->streams[i]->priv_data);
     av_freep(&s->priv_data);
--- a/vocdec.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/vocdec.c	Wed Nov 21 07:41:00 2007 +0000
@@ -39,7 +39,7 @@
 static int voc_read_header(AVFormatContext *s, AVFormatParameters *ap)
 {
     voc_dec_context_t *voc = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int header_size;
     AVStream *st;
 
@@ -64,7 +64,7 @@
 {
     voc_dec_context_t *voc = s->priv_data;
     AVCodecContext *dec = st->codec;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     voc_type_t type;
     int size;
     int sample_rate = 0;
--- a/vocenc.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/vocenc.c	Wed Nov 21 07:41:00 2007 +0000
@@ -28,7 +28,7 @@
 
 static int voc_write_header(AVFormatContext *s)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     const int header_size = 26;
     const int version = 0x0114;
 
@@ -48,7 +48,7 @@
 {
     voc_enc_context_t *voc = s->priv_data;
     AVCodecContext *enc = s->streams[0]->codec;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
 
     if (!voc->param_written) {
         if (enc->codec_tag > 0xFF) {
@@ -84,7 +84,7 @@
 
 static int voc_write_trailer(AVFormatContext *s)
 {
-    put_byte(&s->pb, 0);
+    put_byte(s->pb, 0);
     return 0;
 }
 
--- a/wav.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/wav.c	Wed Nov 21 07:41:00 2007 +0000
@@ -34,7 +34,7 @@
 static int wav_write_header(AVFormatContext *s)
 {
     WAVContext *wav = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     offset_t fmt, fact;
 
     put_tag(pb, "RIFF");
@@ -50,7 +50,7 @@
     end_tag(pb, fmt);
 
     if(s->streams[0]->codec->codec_tag != 0x01 /* hence for all other than PCM */
-       && !url_is_streamed(&s->pb)) {
+       && !url_is_streamed(s->pb)) {
         fact = start_tag(pb, "fact");
         put_le32(pb, 0);
         end_tag(pb, fact);
@@ -70,7 +70,7 @@
 
 static int wav_write_packet(AVFormatContext *s, AVPacket *pkt)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     WAVContext *wav = s->priv_data;
     put_buffer(pb, pkt->data, pkt->size);
     if(pkt->pts != AV_NOPTS_VALUE) {
@@ -84,11 +84,11 @@
 
 static int wav_write_trailer(AVFormatContext *s)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     WAVContext *wav = s->priv_data;
     offset_t file_size;
 
-    if (!url_is_streamed(&s->pb)) {
+    if (!url_is_streamed(s->pb)) {
         end_tag(pb, wav->data);
 
         /* update file size */
@@ -156,7 +156,7 @@
 {
     int size;
     unsigned int tag;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVStream *st;
     WAVContext *wav = s->priv_data;
 
@@ -199,17 +199,17 @@
     AVStream *st;
     WAVContext *wav = s->priv_data;
 
-    if (url_feof(&s->pb))
+    if (url_feof(s->pb))
         return AVERROR(EIO);
     st = s->streams[0];
 
-    left= wav->data_end - url_ftell(&s->pb);
+    left= wav->data_end - url_ftell(s->pb);
     if(left <= 0){
-        left = find_tag(&(s->pb), MKTAG('d', 'a', 't', 'a'));
+        left = find_tag(s->pb, MKTAG('d', 'a', 't', 'a'));
         if (left < 0) {
             return AVERROR(EIO);
         }
-        wav->data_end= url_ftell(&s->pb) + left;
+        wav->data_end= url_ftell(s->pb) + left;
     }
 
     size = MAX_SIZE;
@@ -219,7 +219,7 @@
         size = (size / st->codec->block_align) * st->codec->block_align;
     }
     size= FFMIN(size, left);
-    ret= av_get_packet(&s->pb, pkt, size);
+    ret= av_get_packet(s->pb, pkt, size);
     if (ret <= 0)
         return AVERROR(EIO);
     pkt->stream_index = 0;
--- a/wc3movie.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/wc3movie.c	Wed Nov 21 07:41:00 2007 +0000
@@ -126,7 +126,7 @@
                            AVFormatParameters *ap)
 {
     Wc3DemuxContext *wc3 = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     unsigned int fourcc_tag;
     unsigned int size;
     AVStream *st;
@@ -272,7 +272,7 @@
                            AVPacket *pkt)
 {
     Wc3DemuxContext *wc3 = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     unsigned int fourcc_tag;
     unsigned int size;
     int packet_read = 0;
--- a/westwood.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/westwood.c	Wed Nov 21 07:41:00 2007 +0000
@@ -118,7 +118,7 @@
                              AVFormatParameters *ap)
 {
     WsAudDemuxContext *wsaud = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVStream *st;
     unsigned char header[AUD_HEADER_SIZE];
 
@@ -160,7 +160,7 @@
                              AVPacket *pkt)
 {
     WsAudDemuxContext *wsaud = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     unsigned char preamble[AUD_CHUNK_PREAMBLE_SIZE];
     unsigned int chunk_size;
     int ret = 0;
@@ -213,7 +213,7 @@
                              AVFormatParameters *ap)
 {
     WsVqaDemuxContext *wsvqa = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVStream *st;
     unsigned char *header;
     unsigned char scratch[VQA_PREAMBLE_SIZE];
@@ -315,7 +315,7 @@
                              AVPacket *pkt)
 {
     WsVqaDemuxContext *wsvqa = s->priv_data;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int ret = -1;
     unsigned char preamble[VQA_PREAMBLE_SIZE];
     unsigned int chunk_type;
--- a/wv.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/wv.c	Wed Nov 21 07:41:00 2007 +0000
@@ -135,7 +135,7 @@
 static int wv_read_header(AVFormatContext *s,
                           AVFormatParameters *ap)
 {
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     WVContext *wc = s->priv_data;
     AVStream *st;
 
@@ -164,17 +164,17 @@
     WVContext *wc = s->priv_data;
     int ret;
 
-    if (url_feof(&s->pb))
+    if (url_feof(s->pb))
         return AVERROR(EIO);
     if(wc->block_parsed){
-        if(wv_read_block_header(s, &s->pb) < 0)
+        if(wv_read_block_header(s, s->pb) < 0)
             return -1;
     }
 
     if(av_new_packet(pkt, wc->blksize + WV_EXTRA_SIZE) < 0)
         return AVERROR(ENOMEM);
     memcpy(pkt->data, wc->extra, WV_EXTRA_SIZE);
-    ret = get_buffer(&s->pb, pkt->data + WV_EXTRA_SIZE, wc->blksize);
+    ret = get_buffer(s->pb, pkt->data + WV_EXTRA_SIZE, wc->blksize);
     if(ret != wc->blksize){
         av_free_packet(pkt);
         return AVERROR(EIO);
@@ -204,18 +204,18 @@
     /* if found, seek there */
     if (index >= 0){
         wc->block_parsed = 1;
-        url_fseek(&s->pb, st->index_entries[index].pos, SEEK_SET);
+        url_fseek(s->pb, st->index_entries[index].pos, SEEK_SET);
         return 0;
     }
     /* if timestamp is out of bounds, return error */
     if(timestamp < 0 || timestamp >= s->duration)
         return -1;
 
-    pos = url_ftell(&s->pb);
+    pos = url_ftell(s->pb);
     do{
         ret = av_read_frame(s, pkt);
         if (ret < 0){
-            url_fseek(&s->pb, pos, SEEK_SET);
+            url_fseek(s->pb, pos, SEEK_SET);
             return -1;
         }
         pts = pkt->pts;
--- a/yuv4mpeg.c	Mon Nov 19 20:28:11 2007 +0000
+++ b/yuv4mpeg.c	Wed Nov 21 07:41:00 2007 +0000
@@ -87,7 +87,7 @@
 static int yuv4_write_packet(AVFormatContext *s, AVPacket *pkt)
 {
     AVStream *st = s->streams[pkt->stream_index];
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     AVPicture *picture;
     int* first_pkt = s->priv_data;
     int width, height, h_chroma_shift, v_chroma_shift;
@@ -190,7 +190,7 @@
     char header[MAX_YUV4_HEADER+10];  // Include headroom for the longest option
     char *tokstart,*tokend,*header_end;
     int i;
-    ByteIOContext *pb = &s->pb;
+    ByteIOContext *pb = s->pb;
     int width=-1, height=-1, raten=0, rated=0, aspectn=0, aspectd=0;
     enum PixelFormat pix_fmt=PIX_FMT_NONE,alt_pix_fmt=PIX_FMT_NONE;
     AVStream *st;
@@ -344,7 +344,7 @@
     struct frame_attributes *s1 = s->priv_data;
 
     for (i=0; i<MAX_FRAME_HEADER; i++) {
-        header[i] = get_byte(&s->pb);
+        header[i] = get_byte(s->pb);
         if (header[i] == '\n') {
             header[i+1] = 0;
             break;
@@ -360,7 +360,7 @@
     if (packet_size < 0)
         return -1;
 
-    if (av_get_packet(&s->pb, pkt, packet_size) != packet_size)
+    if (av_get_packet(s->pb, pkt, packet_size) != packet_size)
         return AVERROR(EIO);
 
     if (s->streams[0]->codec->coded_frame) {