[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