|
List Info
Thread: CR-Client: add FLV fileformat
|
|
| CR-Client: add FLV fileformat |
  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 (ehyche real.com)
Technical Lead
RealNetworks, Inc.
_______________________________________________
Datatype-dev mailing list
Datatype-dev helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/da
tatype-dev
|
|
|
| Re: CR-Client: add FLV fileformat |
  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 (ehyche real.com)
> Technical Lead
> RealNetworks, Inc.
>
>
>
------------------------------------------------------------
------------
>
> _______________________________________________
> Datatype-dev mailing list
> Datatype-dev helixcommunity.org
> http://lists.helixcommunity.org/mailman/listinfo/da
tatype-dev
_______________________________________________
Datatype-dev mailing list
Datatype-dev helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/da
tatype-dev
|
|
| RE: CR-Client: add FLV fileformat |
  United States |
2007-02-26 14:16:36 |
> -----Original Message-----
> From: Greg Wright [mailto:gwright real.com]
> Sent: Monday, February 26, 2007 2:49 PM
> To: ehyche real.com
> Cc: datatype-dev lists.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 (ehyche real.com)
> > Technical Lead
> > RealNetworks, Inc.
> >
> >
> >
>
------------------------------------------------------------
--
> ----------
> >
> > _______________________________________________
> > Datatype-dev mailing list
> > Datatype-dev helixcommunity.org
> > http://lists.helixcommunity.org/mailman/listinfo/da
tatype-dev
>
_______________________________________________
Datatype-dev mailing list
Datatype-dev helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/da
tatype-dev
|
|
| Re: CR-Client: add FLV fileformat |
  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-dev helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/da
tatype-dev
|
|
| RE: CR-Client: add FLV fileformat |
  United States |
2007-02-26 16:14:52 |
This is now checked into HEAD.
=============================================
Eric Hyche (ehyche real.com)
Technical Lead
RealNetworks, Inc.
> -----Original Message-----
> From: Greg Wright [mailto:gwright real.com]
> Sent: Monday, February 26, 2007 3:24 PM
> To: ehyche real.com
> Cc: datatype-dev lists.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-dev helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/da
tatype-dev
|
|
| RE: CR-Client: add FLV fileformat |
  United States |
2007-02-26 17:17:20 |
At 12:16 PM 2/26/2007, Eric Hyche wrote:
> > -----Original Message-----
> > From: Greg Wright [mailto:gwright real.com]
> > Sent: Monday, February 26, 2007 2:49 PM
> > To: ehyche real.com
> > Cc: datatype-dev lists.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-dev helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/da
tatype-dev
|
|
[1-6]
|
|