[FFmpeg-devel] Realmedia patch

Michael Niedermayer michaelni
Fri Aug 22 20:51:41 CEST 2008


On Fri, Aug 22, 2008 at 02:23:38PM -0400, Ronald S. Bultje wrote:
> Hi Luca,
> 
> On Fri, Aug 22, 2008 at 2:08 PM, Luca Abeni <lucabe72 at email.it> wrote:
[...]
> > [...]
> >> +    /* request options supported by the server */
> >> +    for (is_real_datatype = 0;; is_real_datatype++) {
> >> +        snprintf(cmd, sizeof(cmd),
> >> +                 "OPTIONS %s RTSP/1.0\r\n", s->filename);
> >> +        if (is_real_datatype)
> >> +            av_strlcat(cmd,
> >> +                       "User-Agent: RealMedia Player Version 6.0.9.1235 (linux-2.0-libc6-i386-gcc2.95\r\n"
> >> +                       "ClientChallenge: 9e26d33f2984236010ef6253fb1887f7\r\n"
> >> +                       "PlayerStarttime: [28/03/2003:22:50:23 00:00]\r\n"
> >> +                       "CompanyID: KnKV4M4I/B2FjJ1TToLycw==\r\n"
> >> +                       "GUID: 00000000-0000-0000-0000-000000000000\r\n"
> >> +                       "RegionData: 0\r\n"
> >> +                       "ClientID: Linux_2.4_6.0.9.1235_play32_RN01_EN_586\r\n",
> >> +                       sizeof(cmd));
> >
> > Is this really needed? I mean: claiming to be RealMedia Player, sending
> > a random Starttime, etc...
> > Are all these tags needed? (what happens if you remove ClientID,
> > User-Agent, etc...?)
> >
> > (anyway, I think that the usage of the "OPTIONS" command to identify the
> > server can be committed independently from the rest of the patch)
> >
> > [...]
> >> +    if (is_real_datatype)
> >> +        av_strlcat(cmd,
> >> +                   "Bandwidth: 250000\r\n"
> >> +                   "GUID: 00000000-0000-0000-0000-000000000000\r\n"
> >> +                   "RegionData: 0\r\n"
> >> +                   "ClientID: Linux_2.4_6.0.9.1235_play32_RN01_EN_586\r\n"
> >> +                   "SupportsMaximumASMBandwidth: 1\r\n"
> >> +                   "Language: en-US\r\n"
> >> +                   "Require: com.real.retain-entity-for-setup\r\n",
> >> +                   sizeof(cmd));
> >
> > Again, it would be better to avoid sending fake information.
> 
> I've tested a few of them, and the servers would refuse to work
> without it. However, I haven't done systematic testing (I guess that
> was on my TODO list for a while and then it dropped off somehow). I
> will do this and test each value and make sure such fake information
> is required for correct playback.

Also is it possible (works and allowed by the RFC...) to add something like
"Note: Above is all a bunch of lies we need to add to workaround reals attempt to shut their competitors out"


> 
> > I also have another question: it seems to me that in this patch
> > (rtsp-realmedia.patch) you are not explicitly creating new AVStreams
> > with av_new_stream. So, only one AVStream is created, when the "m=" SDP
> > line is parsed. But an RM stream can contain more than one stream (for
> > example, an audio stream and a video stream), right? Where are the
> > additional AVStreams created? I am wondering if it would simpler to use
> > an approach similar to the one used for parsing TS in RTP (not creating
> > and AVStream in rtsp.c, but leave the streams creation to the RM demuxer)?
> 
> I have honestly only tested with single-stream real streams... Most
> multi-streams (video+audio) are protected anyway. 

protected? elaborate please

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

Freedom in capitalist society always remains about the same as it was in
ancient Greek republics: Freedom for slave owners. -- Vladimir Lenin
-------------- 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/20080822/b9b7f2ca/attachment.pgp>



More information about the ffmpeg-devel mailing list