[FFmpeg-devel] [PATCH/RFC] Ryan Martell's native mms code

Björn Axelsson bjorn.axelsson
Thu Aug 9 16:16:53 CEST 2007


On Thu, 2007-08-09 at 16:02 +0200, Michael Niedermayer wrote:
> Hi
> 
> On Thu, Aug 09, 2007 at 03:28:26PM +0200, Bj?rn Axelsson wrote:
> > On Thu, 2007-08-09 at 14:35 +0200, Reimar D?ffinger wrote:
> > > Hello,
> > > On Thu, Aug 09, 2007 at 02:24:08PM +0200, Bj?rn Axelsson wrote:
> > > > I have merged Ryan's native_mms work mentioned in an earlier mail with
> > > > the SVN trunk, to produce an easily reviewed patch. I have tried not to
> > > > change anything from Ryan's code except what was needed to make it
> > > > compile.
> > > > 
> > > > native_mms.c is mostly and will still require substantial work until it
> > > > is acceptable. It should probably also be split up into three files: one
> > > > for common functions, one for tcp/udp and one for http. 
> > > 
> > > Actually I don't see why it needs to be a demuxer at all instead of only
> > > a protocol. At least in MPlayer splitting it this way works (though
> > > stream selection admittedly is ugly and possibly not suitable in this
> > > way for ffmpeg).
> > 
> > I don't have enough knowledge about the ffmpeg internals to say whether
> > it is possible or not to implement it as a protocol instead. However, it
> > seems that rtsp is implemented as a demuxer and I would guess that
> > native_mms.c is based in part on rtsp.c.
> 
> noone understands rtsp.c so this is not a good start ...
> 
> 
> > If mms was implemented as a protocol, the asf demuxer would have to take
> > over the application interface for much of the functionality such as
> > playing, pausing and seeking with different cases for file and mms
> > access. If that is acceptable I'll give it a try and see if I run into
> > any problems.
> 
> hmm, is there more needed than
> 
> asf_seek(stuff){
>     if(mms){
>         int ret= context->protocol.seek(stuff);
>         flush_everything();
>         return ret;
>     }
> }

Yes. Since protocol.seek doesn't support timestamp seeking. It would
have to do something like this:

asf_seek(stuff){
    if(mms){
	int ret;
	if(stuff & AV_SEEK_BYTE)
          ret= context->protocol.seek(stuff);
	else
          ret= ff_mms_seek_timestamp(stuff);
        flush_everything();
        return ret;
    }
}

-- 
Bj?rn Axelsson                    Phone: +46-(0)90-18 98 97
Intinor AB                          Fax: +46-(0)920-757 10
www.intinor.se
Interactive Television & Digital Media Distribution





More information about the ffmpeg-devel mailing list