[datatype-dev] QTFileFormat and Framesize

[datatype-dev] QTFileFormat and Framesize

Ashish.As.Gupta at nokia.com Ashish.As.Gupta at nokia.com
Thu Oct 27 08:57:19 PDT 2005


 


________________________________

	From: ext Milko Boic [mailto:milko at real.com] 
	Sent: Tuesday, October 25, 2005 5:55 PM
	To: Gupta Ashish.As (Nokia-TP-MSW/Irving);
datatype-dev at lists.helixcommunity.org
	Subject: Re: [datatype-dev] QTFileFormat and Framesize
	
	
	At 11:48 AM 10/25/2005, Ashish.As.Gupta at nokia.com wrote:
	

		Hi,
		QTFileFormat is storing TrackWidth/TrackHeight in the
Headers as
		"Width"/"Height". For network playback, width and height
information is
		available through SDP and it is stored in "FrameWidth"
and
		"FrameHeight".
		
		vidrend.cpp calls CheckVideoAreaSize during the
UpdateDisplay() and
		rejects the clip if it is larger than a pref value. I
believe this
		happens when Initialization is over and it is actually
decoding.
		
		I would like to make following additions to the
functionality:
		
		1. Each video format stores the frame width/height
information in the
		Stream Header so that it is available to TLC and
Renderers. I am hoping
		to extract this information by parsing
SampleDescriptions. This
		information will be stored as "FrmaeWidth" and
"FrameHeight".
		I see for H.263 FrameWidth/FrameHeight is parsed but not
sure if other
		(MP4V/AVC) sample descriptions are parsed to extract the
same
		information.
		This will add GetFrameWidth/GetFrameHeight to CQTTrack
to be used by
		CQTFileFormat.


	- mp4 file format is a container file format and it will be
difficult to maintain parsing of FrameWidth and FrameHeight for every
datatype that can reside within it
	- in some cases obtaining FrameWidth and FrameHeight is
difficult and requires much code that belong to decoding and
depacketization side and not file reading.  Placing this code into the
file format will result in increased image size and possibly duplicate
functionality which already exists in decoder or renderer
	- this clearly does not work for streamed content
	
	Thus, setting of FrameWidth and FrameHeight into the stream
header should be done by datatype specific derivation of HX_RESULT
CVideoFormat::Init(IHXValues* pHeader) .
	Then, the generic check in vidrend.cpp in OnHeader can ba made
after m_pVideoFormat->Init(pHeader); is invoked.
	
	The existing code that sets FrameWidth and FrameHeight in
vidrend.cpp should be used as the fallback only if FrameWidth and
FrameHeight are not already set in the stream header.
	
	
	

		2. All the Renderers should check previously stored
		FrameWidth/FrameHeight against
"MaxVideoWidth"/"MaxVideoHeight" during
		OnHeader().
		Checking here allows the partial playback for clips when
Video Size is
		larger than the maximum supported size.


	That will happen automatically by the virtue of the check being
implemented in the base video renderer.
	However, each video renderer will have to implement a way to
supply FrameWidth and FrameHeight into the stream header when available.
	Note that ESD and other data-type specific descriptors are
passed to the renderer as "OpaqueData" Buffer in the stream header for
local playback streams.
	For streamed content, the availability of FrameWidth and
FrameHeight in OnHeader depends on payload specification for a datatype.
	 
	I was looking into datatype/mp4/common/mp4desc.cpp but couldn't
see where this information is available. For H.263, "OpaqueData"
contains DecoderSpecific info that doesn't contain the FrameWidth and
FrameHeight, so for this datatype can we use the already parsed
information in fileformat?  For streaming H.263, it is already available
from SDP.
	 
	Milko
	
	
	

		Please let me know if anyone has any suggestions on
this.
		
		Thanks
		Ashish
		
		_______________________________________________
		Datatype-dev mailing list
		Datatype-dev at helixcommunity.org
	
http://lists.helixcommunity.org/mailman/listinfo/datatype-dev 





More information about the Datatype-dev mailing list
 

Site Map   |   Terms of Use   |   Privacy Policy   |   Contact Us

Copyright © 1995-2007 RealNetworks, Inc. All rights reserved. RealNetworks and Helix are trademarks of RealNetworks.
All other trademarks or registered trademarks are the property of their respective holders.