List Info

Thread: CR-Client: add FLV fileformat




CR-Client: add FLV fileformat
country flaguser name
United States
2007-02-26 13:22:49
Description
-----------------------------------------
This change adds a fileformat plugin for the Flash
video (FLV) format. If both audio and video are present,
then it outputs an mp3 audio stream and an FLV video
stream. It also reads meta-data from meta-data packets
and handles seeking.

Files Added
-----------------------------------------
datatype/flash/flv/fileformat/* (see attached .zip file)

Files Modified
-----------------------------------------
helix.bif - add datatype_flash_flv_fileformat target

Branches
-----------------------------------------
HEAD only

Index: helix.bif
============================================================
=======
RCS file: /cvsroot/common/build/BIF/helix.bif,v
retrieving revision 1.622
diff -u -w -u -w -r1.622 helix.bif
--- helix.bif   26 Feb 2007 09:17:39 -0000      1.622
+++ helix.bif   26 Feb 2007 19:21:30 -0000
 -3553,6
+3553,20 
+    <!-- DATATYPE/FLASH/FLV/FILEFORMAT  -->
+    <module
id="datatype_flash_flv_fileformat"
name="datatype/flash/flv/fileformat"
group="core">
+        <cvs root="helix"/>
+
+        <source_dependlist>
+            common_include
+        </source_dependlist>
+
+        <dependlist>
+            common_util
+            common_system
+            common_dbgtool
+            common_container
+            common_runtime
+            common_log_logutil
+            datatype_common_container
+            datatype_flash_flv_common
+        </dependlist>
+    </module>


=============================================
Eric Hyche (ehychereal.com)
Technical Lead
RealNetworks, Inc. 

_______________________________________________
Datatype-dev mailing list
Datatype-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/da
tatype-dev

  
Re: CR-Client: add FLV fileformat
country flaguser name
United States
2007-02-26 13:48:58
Eric Hyche wrote:
> Description
> -----------------------------------------
> This change adds a fileformat plugin for the Flash
> video (FLV) format. If both audio and video are
present,
> then it outputs an mp3 audio stream and an FLV video
> stream. It also reads meta-data from meta-data packets
> and handles seeking.

flv_file_format.cpp:

char szTmp[64];
sprintf(szTmp,
"AverageBandwidth=%lu,Priority=5;AverageBandwidth=0,Pri
ority=5;", m_ulAudioBitrate);


sztmp needs to be longer, just the quoted string is 63
chars long. In other parts of the code you use 128.


HXBOOL CHXFLVFileFormat::AnyPacketsToDeliver()
{
     HXBOOL bRet = FALSE;

     // Check all streams
     for (UINT32 i = 0; i < m_ulStreamCount &&
!bRet; i++)
     {
         bRet = AnyPacketsToDeliverOnStream(i);
     }

     return bRet;
}

Seems like you want to break out as soon as a TRUE is
detected. If you don't, the bRet could be reset to FALSE
by a later stream.


         // Compute the duration to use.
         UINT32 ulMaxDuration = 3600000;
         if (m_bHaveAudioDuration || m_bHaveVideoDuration)
         {
             ulMaxDuration = HX_MAX(m_ulAudioDuration,
m_ulVideoDuration);
         }

Just want to verify, 1 hour is the smallest max duration
we ever want? Just curious why 1 hour.



rest looks good.

--greg.






> 
> Files Added
> -----------------------------------------
> datatype/flash/flv/fileformat/* (see attached .zip
file)
> 
> Files Modified
> -----------------------------------------
> helix.bif - add datatype_flash_flv_fileformat target
> 
> Branches
> -----------------------------------------
> HEAD only
> 
> Index: helix.bif
>
============================================================
=======
> RCS file: /cvsroot/common/build/BIF/helix.bif,v
> retrieving revision 1.622
> diff -u -w -u -w -r1.622 helix.bif
> --- helix.bif   26 Feb 2007 09:17:39 -0000      1.622
> +++ helix.bif   26 Feb 2007 19:21:30 -0000
>  -3553,6 +3553,20 
> +    <!-- DATATYPE/FLASH/FLV/FILEFORMAT  -->
> +    <module
id="datatype_flash_flv_fileformat"
> name="datatype/flash/flv/fileformat"
group="core">
> +        <cvs root="helix"/>
> +
> +        <source_dependlist>
> +            common_include
> +        </source_dependlist>
> +
> +        <dependlist>
> +            common_util
> +            common_system
> +            common_dbgtool
> +            common_container
> +            common_runtime
> +            common_log_logutil
> +            datatype_common_container
> +            datatype_flash_flv_common
> +        </dependlist>
> +    </module>
> 
> 
> =============================================
> Eric Hyche (ehychereal.com)
> Technical Lead
> RealNetworks, Inc. 
> 
> 
>
------------------------------------------------------------
------------
> 
> _______________________________________________
> Datatype-dev mailing list
> Datatype-devhelixcommunity.org
> http://lists.helixcommunity.org/mailman/listinfo/da
tatype-dev


_______________________________________________
Datatype-dev mailing list
Datatype-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/da
tatype-dev

RE: CR-Client: add FLV fileformat
country flaguser name
United States
2007-02-26 14:16:36
> -----Original Message-----
> From: Greg Wright [mailto:gwrightreal.com] 
> Sent: Monday, February 26, 2007 2:49 PM
> To: ehychereal.com
> Cc: datatype-devlists.helixcommunity.org
> Subject: Re: [datatype-dev] CR-Client: add FLV
fileformat
> 
> Eric Hyche wrote:
> > Description
> > -----------------------------------------
> > This change adds a fileformat plugin for the
Flash
> > video (FLV) format. If both audio and video are
present,
> > then it outputs an mp3 audio stream and an FLV
video
> > stream. It also reads meta-data from meta-data
packets
> > and handles seeking.
> 
> flv_file_format.cpp:
> 
> char szTmp[64];
> sprintf(szTmp, 
>
"AverageBandwidth=%lu,Priority=5;AverageBandwidth=0,Pri
ority=5
> ;", m_ulAudioBitrate);
> 
> 
> sztmp needs to be longer, just the quoted string is 63
> chars long. In other parts of the code you use 128.
> 

Good catch. I didn't use to have the second rule in there,
and 64 was adequate for the single rule. I'll update this
to 128.

> 
> HXBOOL CHXFLVFileFormat::AnyPacketsToDeliver()
> {
>      HXBOOL bRet = FALSE;
> 
>      // Check all streams
>      for (UINT32 i = 0; i < m_ulStreamCount
&& !bRet; i++)
>      {
>          bRet = AnyPacketsToDeliverOnStream(i);
>      }
> 
>      return bRet;
> }
> 
> Seems like you want to break out as soon as a TRUE is
> detected. If you don't, the bRet could be reset to
FALSE
> by a later stream.
> 

It does break out as soon as bRet goes to TRUE. Check
out the exit condition on the for() loop.

> 
>          // Compute the duration to use.
>          UINT32 ulMaxDuration = 3600000;
>          if (m_bHaveAudioDuration ||
m_bHaveVideoDuration)
>          {
>              ulMaxDuration = HX_MAX(m_ulAudioDuration,

> m_ulVideoDuration);
>          }
> 
> Just want to verify, 1 hour is the smallest max
duration
> we ever want? Just curious why 1 hour.
> 

Most all of the time we will know the duration of
the file. However, if we ran into: a) a file with no
"duration" field in the meta-data; and b) a
linear
file system where we couldn't seek to the end of the
file, then we won't know the duration. This max duration
is just setting the size of the on-the-fly seek table.
If this duration value is too small, then all that it
means that is the granularity or size of the seek
table will not be optimal. Everything will still work.
Worst-cse, you might have a more granular seek table and
have to read a few more tags before knowing exactly the
right place to seek to.

Eric

> 
> 
> rest looks good.
> 
> --greg.
> 
> 
> 
> 
> 
> 
> > 
> > Files Added
> > -----------------------------------------
> > datatype/flash/flv/fileformat/* (see attached .zip
file)
> > 
> > Files Modified
> > -----------------------------------------
> > helix.bif - add datatype_flash_flv_fileformat
target
> > 
> > Branches
> > -----------------------------------------
> > HEAD only
> > 
> > Index: helix.bif
> >
============================================================
=======
> > RCS file: /cvsroot/common/build/BIF/helix.bif,v
> > retrieving revision 1.622
> > diff -u -w -u -w -r1.622 helix.bif
> > --- helix.bif   26 Feb 2007 09:17:39 -0000     
1.622
> > +++ helix.bif   26 Feb 2007 19:21:30 -0000
> >  -3553,6 +3553,20 
> > +    <!-- DATATYPE/FLASH/FLV/FILEFORMAT 
-->
> > +    <module
id="datatype_flash_flv_fileformat"
> > name="datatype/flash/flv/fileformat"
group="core">
> > +        <cvs root="helix"/>
> > +
> > +        <source_dependlist>
> > +            common_include
> > +        </source_dependlist>
> > +
> > +        <dependlist>
> > +            common_util
> > +            common_system
> > +            common_dbgtool
> > +            common_container
> > +            common_runtime
> > +            common_log_logutil
> > +            datatype_common_container
> > +            datatype_flash_flv_common
> > +        </dependlist>
> > +    </module>
> > 
> > 
> > =============================================
> > Eric Hyche (ehychereal.com)
> > Technical Lead
> > RealNetworks, Inc. 
> > 
> > 
> > 
>
------------------------------------------------------------
--
> ----------
> > 
> > _______________________________________________
> > Datatype-dev mailing list
> > Datatype-devhelixcommunity.org
> > http://lists.helixcommunity.org/mailman/listinfo/da
tatype-dev
> 


_______________________________________________
Datatype-dev mailing list
Datatype-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/da
tatype-dev

Re: CR-Client: add FLV fileformat
country flaguser name
United States
2007-02-26 14:24:24
>> HXBOOL CHXFLVFileFormat::AnyPacketsToDeliver()
>> {
>>      HXBOOL bRet = FALSE;
>>
>>      // Check all streams
>>      for (UINT32 i = 0; i < m_ulStreamCount
&& !bRet; i++)
>>      {
>>          bRet = AnyPacketsToDeliverOnStream(i);
>>      }
>>
>>      return bRet;
>> }
>>
>> Seems like you want to break out as soon as a TRUE
is
>> detected. If you don't, the bRet could be reset to
FALSE
>> by a later stream.
>>
> 
> It does break out as soon as bRet goes to TRUE. Check
> out the exit condition on the for() loop.

Yeah, I totally missed that.

--greg.


_______________________________________________
Datatype-dev mailing list
Datatype-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/da
tatype-dev

RE: CR-Client: add FLV fileformat
country flaguser name
United States
2007-02-26 16:14:52
This is now checked into HEAD.

=============================================
Eric Hyche (ehychereal.com)
Technical Lead
RealNetworks, Inc.  

> -----Original Message-----
> From: Greg Wright [mailto:gwrightreal.com] 
> Sent: Monday, February 26, 2007 3:24 PM
> To: ehychereal.com
> Cc: datatype-devlists.helixcommunity.org
> Subject: Re: [datatype-dev] CR-Client: add FLV
fileformat
> 
> 
> >> HXBOOL
CHXFLVFileFormat::AnyPacketsToDeliver()
> >> {
> >>      HXBOOL bRet = FALSE;
> >>
> >>      // Check all streams
> >>      for (UINT32 i = 0; i < m_ulStreamCount
&& !bRet; i++)
> >>      {
> >>          bRet =
AnyPacketsToDeliverOnStream(i);
> >>      }
> >>
> >>      return bRet;
> >> }
> >>
> >> Seems like you want to break out as soon as a
TRUE is
> >> detected. If you don't, the bRet could be
reset to FALSE
> >> by a later stream.
> >>
> > 
> > It does break out as soon as bRet goes to TRUE.
Check
> > out the exit condition on the for() loop.
> 
> Yeah, I totally missed that.
> 
> --greg.
> 


_______________________________________________
Datatype-dev mailing list
Datatype-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/da
tatype-dev

RE: CR-Client: add FLV fileformat
country flaguser name
United States
2007-02-26 17:17:20
At 12:16 PM 2/26/2007, Eric Hyche wrote:

> > -----Original Message-----
> > From: Greg Wright [mailto:gwrightreal.com]
> > Sent: Monday, February 26, 2007 2:49 PM
> > To: ehychereal.com
> > Cc: datatype-devlists.helixcommunity.org
> > Subject: Re: [datatype-dev] CR-Client: add FLV
fileformat
> >
> > Eric Hyche wrote:
> > > Description
> > > -----------------------------------------
> > > This change adds a fileformat plugin for the
Flash
> > > video (FLV) format. If both audio and video
are present,
> > > then it outputs an mp3 audio stream and an
FLV video
> > > stream. It also reads meta-data from
meta-data packets
> > > and handles seeking.
> >
> > flv_file_format.cpp:
> >
> > char szTmp[64];
> > sprintf(szTmp,
> >
"AverageBandwidth=%lu,Priority=5;AverageBandwidth=0,Pri
ority=5
> > ;", m_ulAudioBitrate);
> >
> >
> > sztmp needs to be longer, just the quoted string
is 63
> > chars long. In other parts of the code you use
128.
> >
>
>Good catch. I didn't use to have the second rule in
there,
>and 64 was adequate for the single rule. I'll update
this
>to 128.

Please #define the number so it can be changed once...

JEff


_______________________________________________
Datatype-dev mailing list
Datatype-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/da
tatype-dev

[1-6]

about | contact  Other archives ( Real Estate discussion Medical topics )