[FFmpeg-devel] [patch]MMS protocol over TCP

Michael Niedermayer michaelni
Wed Mar 24 15:41:30 CET 2010


On Wed, Mar 24, 2010 at 10:33:01PM +0800, zhentan feng wrote:
> Hi
> 
> On Wed, Mar 24, 2010 at 1:19 AM, Ronald S. Bultje <rsbultje at gmail.com>wrote:
> 
> > Hi,
> >
> > On Tue, Mar 23, 2010 at 12:56 PM, zhentan feng <spyfeng at gmail.com> wrote:
> > > I implement MMS protocol over TCP based on other developers' patch.
> > > The patch is  against the latest svn trunk and attached below.
> > > thanks Ronald's great help.
> > [..]
> > > Index: libavformat/asfenc.c
> > > ===================================================================
> > > --- libavformat/asfenc.c      (revision 22644)
> > > +++ libavformat/asfenc.c      (working copy)
> > > @@ -203,7 +203,7 @@
> > >      put_buffer(s, *g, sizeof(*g));
> > >  }
> > >
> > > -static int put_str16_nolen(ByteIOContext *s, const char *tag)
> > > +int ff_put_str16_nolen(ByteIOContext *s, const char *tag)
> > >  {
> > >      const uint8_t *q = tag;
> > >      int ret = 0;
> > > @@ -228,7 +228,7 @@
> > >      if (url_open_dyn_buf(&dyn_buf) < 0)
> > >          return;
> > >
> > > -    put_str16_nolen(dyn_buf, tag);
> > > +    ff_put_str16_nolen(dyn_buf, tag);
> > >      len = url_close_dyn_buf(dyn_buf, &pb);
> > >      put_le16(s, len);
> > >      put_buffer(s, pb, len);
> > > @@ -361,7 +361,7 @@
> > >          hpos = put_header(pb, &ff_asf_comment_header);
> > >
> > >          for (n = 0; n < FF_ARRAY_ELEMS(tags); n++) {
> > > -            len = tags[n] ? put_str16_nolen(dyn_buf, tags[n]->value) :
> > 0;
> > > +            len = tags[n] ? ff_put_str16_nolen(dyn_buf, tags[n]->value)
> > : 0;
> > >              put_le16(pb, len);
> > >          }
> > >          len = url_close_dyn_buf(dyn_buf, &buf);
> > > @@ -489,7 +489,7 @@
> > >          if ( url_open_dyn_buf(&dyn_buf) < 0)
> > >              return AVERROR(ENOMEM);
> > >
> > > -        put_str16_nolen(dyn_buf, desc);
> > > +        ff_put_str16_nolen(dyn_buf, desc);
> > >          len = url_close_dyn_buf(dyn_buf, &buf);
> > >          put_le16(pb, len / 2); // "number of characters" = length in
> > bytes / 2
> > >
> > > Index: libavformat/asf.h
> > > ===================================================================
> > > --- libavformat/asf.h (revision 22644)
> > > +++ libavformat/asf.h (working copy)
> > > @@ -230,4 +230,5 @@
> > >
> > >  extern AVInputFormat asf_demuxer;
> > >
> > > +extern int ff_put_str16_nolen(ByteIOContext *s, const char *tag);
> > >  #endif /* AVFORMAT_ASF_H */
> >
> > An alternative here is to move this function to asf.h as an inline
> > function, so there's no odd interdependencies.
> >
> > I modified it as inline function.
> see attached patch.
> 
[...]
> Index: libavformat/asf.h
> ===================================================================
> --- libavformat/asf.h	(revision 22644)
> +++ libavformat/asf.h	(working copy)
> @@ -230,4 +230,20 @@
>  
>  extern AVInputFormat asf_demuxer;
>  
> +static inline int ff_put_str16_nolen(ByteIOContext *s, const char *tag)
> +{
> +    const uint8_t *q = tag;
> +    int ret = 0;
> +
> +    while (*q) {
> +        uint32_t ch;
> +        uint16_t tmp;
> +
> +        GET_UTF8(ch, *q++, break;)
> +        PUT_UTF16(ch, tmp, put_le16(s, tmp);ret += 2;)
> +    }
> +    put_le16(s, 0);
> +    ret += 2;
> +    return ret;
> +}
>  #endif /* AVFORMAT_ASF_H */

code duplication (in each object including this and using the function)
iam against this, declare the proper dependancies or if you have to move
this to a (maybe new) C file.

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

When the tyrant has disposed of foreign enemies by conquest or treaty, and
there is nothing more to fear from them, then he is always stirring up
some war or other, in order that the people may require a leader. -- Plato
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20100324/18fb5109/attachment.pgp>



More information about the ffmpeg-devel mailing list