summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThibaut Mattern <tmattern@users.sourceforge.net>2005-10-02 21:44:33 +0000
committerThibaut Mattern <tmattern@users.sourceforge.net>2005-10-02 21:44:33 +0000
commitf324f80efe40fef61abb6157e7e99b1196fd22c7 (patch)
treeddfd2571a8f4863aac9c47c4cb73a59c7e4d66ba
parent663ae57d01e835db069ab52d72f35a0581868d60 (diff)
downloadxine-lib-f324f80efe40fef61abb6157e7e99b1196fd22c7.tar.gz
xine-lib-f324f80efe40fef61abb6157e7e99b1196fd22c7.tar.bz2
Fixed mpeg4 ASP.
CVS patchset: 7751 CVS date: 2005/10/02 21:44:33
-rw-r--r--src/demuxers/demux_matroska.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/demuxers/demux_matroska.c b/src/demuxers/demux_matroska.c
index 438f11d39..831039399 100644
--- a/src/demuxers/demux_matroska.c
+++ b/src/demuxers/demux_matroska.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: demux_matroska.c,v 1.38 2005/10/02 21:29:39 tmattern Exp $
+ * $Id: demux_matroska.c,v 1.39 2005/10/02 21:44:33 tmattern Exp $
*
* demultiplexer for matroska streams
*
@@ -1149,8 +1149,26 @@ static int parse_track_entry(demux_matroska_t *this, matroska_track_t *track) {
} else if ((!strcmp(track->codec_id, MATROSKA_CODEC_ID_V_MPEG4_SP)) ||
(!strcmp(track->codec_id, MATROSKA_CODEC_ID_V_MPEG4_ASP)) ||
(!strcmp(track->codec_id, MATROSKA_CODEC_ID_V_MPEG4_AP))) {
+ xine_bmiheader *bih;
+
lprintf("MATROSKA_CODEC_ID_V_MPEG4_*\n");
+ /* create a bitmap info header struct for MPEG 4 */
+ bih = malloc(sizeof(xine_bmiheader) + track->codec_private_len);
+ bih->biSize = sizeof(xine_bmiheader) + track->codec_private_len;
+ bih->biCompression = meFOURCC('M', 'P', '4', 'S');
+ bih->biWidth = track->video_track->pixel_width;
+ bih->biHeight = track->video_track->pixel_height;
+ _x_bmiheader_le2me(bih);
+
+ /* add bih extra data */
+ memcpy(bih + 1, track->codec_private, track->codec_private_len);
+ free(track->codec_private);
+ track->codec_private = (uint8_t *)bih;
+ track->codec_private_len = bih->biSize;
track->buf_type = BUF_VIDEO_MPEG4;
+
+ /* init as a vfw decoder */
+ init_codec = init_codec_video;
} else if (!strcmp(track->codec_id, MATROSKA_CODEC_ID_V_MPEG4_AVC)) {
xine_bmiheader *bih;