[prev in list] [next in list] [prev in thread] [next in thread] 

List:       helix-datatype-cvs
Subject:    [Datatype-cvs] mpg/common xmdplugincommon.h,1.2,1.2.94.1
From:       jgordon () helixcommunity ! org
Date:       2012-01-19 19:21:08
[Download RAW message or body]

Update of /cvsroot/datatype/mpg/common
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv18066

Modified Files:
      Tag: hxclient_3_6_1_atlas
	xmdplugincommon.h 
Log Message:
Synopsis
========
Various changes and fixes to MPEG video ES file support

Branches: 361atlas, 310atlas, HEAD
Reviewed By: Qiang


Description
===========
Primarily changes to allow the depacketizer + codec plugin rendering 
format to handle the output from mpgfformat in case of ES files.

1. For ES files for local playback, mpgfformat was using RTP 
packetization (2250) for packet creation, but without e.g. the 
RTP timestamps, etc. This is really silly and inefficient and 
error-prone! And of course also does not work with the newer 
renderer due to requiring a lot more depacketization work.

This is rewritten to just find a full frame and create a simple ES packet.
Including setting the right PTS in the RTP time.

2. Duration and bitrate estimation for ES was buggy and often incorrect. 
This in turn also screws up seeking when they are wrong.

The GOP time_code parsing as well as the end-start duration calculation 
had some bugs. Also the way it was handling finding the last GOP and 
following frames was overly complicated and inefficient. 

Fixed the time_code parsing and calculation and rewrote the parsing to 
start from the end and search backward for a GOP!

Once a duration was determined from GOP, the handling of that duration, 
the bitrate, etc.  was strange and buggy. I basically just rewrote 
that as well.

3. Eliminated the unnecessary alloc and copy from the read buffer to a 
new packet buffer. Just wrap it in a CHXStatic buffer instead.
 
 3. Changed the output mime type to differentiate between MPEG-1 and MPEG-2,
 using the same mime types as the ts plugins, since the packet format is now
 the same. Different mime types allows different codecs (or renderers) for 
 MPEG-1 vs MPEG-2, as well as other cases where we want to identify the codec
 from the stream header.

 Changed the whole mime type setting block in mpgfformat to be more readable 
 and maintainable.

 Added the new mimetypes to mpgrenderer and similarly updating its mimetype 
 parsing for ease of readability and maintenance.

 4. Removed some unreachable code and ifdefd out server RTP packetization 
 on client builds.


 Files Affected
 ==============
 datatype/mpg/common/xmdplugincommon.h
 datatype/mpg/fileformat/Umakefil
 datatype/mpg/fileformat/rmpgff.cpp
 datatype/mpg/fileformat/rmpgff.h
 datatype/mpg/fileformat/xmddemuxer.cpp
 datatype/mpg/fileformat/xmddemuxer.h
 datatype/mpg/renderer/mpgvideo.cpp
 datatype/mpg/renderer/mpgvideo.h


Index: xmdplugincommon.h
===================================================================
RCS file: /cvsroot/datatype/mpg/common/Attic/xmdplugincommon.h,v
retrieving revision 1.2
retrieving revision 1.2.94.1
diff -u -d -r1.2 -r1.2.94.1
--- xmdplugincommon.h	14 Mar 2005 19:20:43 -0000	1.2
+++ xmdplugincommon.h	19 Jan 2012 19:21:05 -0000	1.2.94.1
@@ -66,6 +66,7 @@
     eVideoType      eVideo;    
     
     UINT32          ulBitRate,
+                    ulMaxBitRate,
                     ulBufSize,
                     ulChannels,
                     ulFirstTimeStamp,
@@ -80,7 +81,7 @@
                     nHeight;
 
     double          dFrameTime;     // ms per frame
-    HXBOOL            bHasTimeStamp;
+    HXBOOL          bHasTimeStamp;
 } tStreamInfo;
 
 typedef struct


_______________________________________________
Datatype-cvs mailing list
Datatype-cvs@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/datatype-cvs
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic