List Info

Thread: r176 - in trunk/nututils: Makefile demux_avi.c framer_mp3.c nutmerge.c nutmerge.h




r176 - in trunk/nututils: Makefile demux_avi.c framer_mp3.c nutmerge.c nutmerge.h
user name
2006-11-04 12:05:16
Author: ods15
Date: Sat Nov  4 13:05:13 2006
New Revision: 176

Added:
   trunk/nututils/framer_mp3.c
Modified:
   trunk/nututils/Makefile
   trunk/nututils/demux_avi.c
   trunk/nututils/nutmerge.c
   trunk/nututils/nutmerge.h

Log:
make demux_avi more strict on what it accepts
add framer_mp3


Modified: trunk/nututils/Makefile
============================================================
==================
--- trunk/nututils/Makefile	(original)
+++ trunk/nututils/Makefile	Sat Nov  4 13:05:13 2006
 -8,7
+8,7 
 	$ $ -DAVI_PROG $^ -o $
 oggreader: demux_ogg.c
 	$ $ -DOGG_PROG $^ -o $
-nutmerge: demux_ogg.c demux_avi.c framer_vorbis.c
framer_mpeg4.c nutmerge.c ../libnut/libnut.a # demux_nut.c
+nutmerge: demux_ogg.c demux_avi.c framer_vorbis.c
framer_mp3.c framer_mpeg4.c nutmerge.c ../libnut/libnut.a #
demux_nut.c
 	$ $ $^ -o $
 nutindex: nutindex.c
 	$ $ $^ -o $

Modified: trunk/nututils/demux_avi.c
============================================================
==================
--- trunk/nututils/demux_avi.c	(original)
+++ trunk/nututils/demux_avi.c	Sat Nov  4 13:05:13 2006
 -332,6
+332,25 
 static int read_headers(demuxer_priv_t * avi, stream_t **
streams) {
 	int i;
 	if ((i = avi_read_headers(avi))) return i;
+	for (i = 0; i < avi->avih->dwStreams; i++) {
+		if (avi->stream[i].type == 0) { // video
+			char * fourccs[] =
{"FMP4","fmp4","DIVX","di
vx",
+			                   
"DIV1","div1","MP4S","mp4
s",
+			                   
"xvid","XVID","XviD","XVI
X",
+			                   
"M4S2","m4s2","mp4v","MP4
V"
+			                   
"DX50","dx50","BLZ0",
+			};
+			int j;
+			for (j = sizeof(fourccs)/sizeof(fourccs[0]); j--; ) {
+				if (!strncmp(avi->stream[i].video->biCompression,
fourccs[j], 4)) break;
+			}
+			if (j == -1) return 18;
+		} else {
+			if (avi->stream[i].audio->wFormatTag[0] != 0x55 ||
+			    avi->stream[i].audio->wFormatTag[1] != 0x00)
return 19;
+		}
+	}
+
 	*streams = avi->s = malloc(sizeof(stream_t) *
(avi->avih->dwStreams + 1));
 	for (i = 0; i < avi->avih->dwStreams; i++) {
 		extern demuxer_t avi_demuxer;
 -340,19
+359,18 
 		avi->s[i].demuxer.priv = avi;
 		avi->s[i].packets_alloc = avi->s[i].npackets = 0;
 		avi->s[i].packets = NULL;
-		if (i == 0) avi->s[i].codec_id = e_mpeg4;
-		else avi->s[i].codec_id = e_null;
 
 		avi->s[i].sh.type = avi->stream[i].type;
 		avi->s[i].sh.time_base.den =
avi->stream[i].strh->dwRate;
 		avi->s[i].sh.time_base.nom =
avi->stream[i].strh->dwScale;
 		avi->s[i].sh.fixed_fps = 1;
-		avi->s[i].sh.decode_delay = !i; // FIXME
 		avi->s[i].sh.codec_specific_len =
avi->stream[i].extra_len;
 		avi->s[i].sh.codec_specific = avi->stream[i].extra;
 		if (avi->stream[i].type == 0) { // video
 			avi->s[i].sh.fourcc_len = 4;
 			avi->s[i].sh.fourcc =
avi->stream[i].video->biCompression;
+			avi->s[i].codec_id = e_mpeg4;
+			avi->s[i].sh.decode_delay = 1;
 
 			avi->s[i].sh.width =
avi->stream[i].video->biWidth;
 			avi->s[i].sh.height =
avi->stream[i].video->biHeight;
 -360,8
+378,10 
 			avi->s[i].sh.sample_height = 0;
 			avi->s[i].sh.colorspace_type = 0;
 		} else { // audio
-			avi->s[i].sh.fourcc_len = 2;
-			avi->s[i].sh.fourcc =
avi->stream[i].audio->wFormatTag;
+			avi->s[i].sh.fourcc_len = 4;
+			avi->s[i].sh.fourcc = "mp3 ";
+			avi->s[i].codec_id = e_mp3;
+			avi->s[i].sh.decode_delay = 0;
 
 			avi->s[i].sh.samplerate_nom = 1;
 			avi->s[i].sh.samplerate_denom =
avi->stream[i].audio->nSamplesPerSec;
 -449,36
+469,6 
 	uninit
 };
 
-struct framer_priv_s { stream_t * stream; };
-
-static int n_get_packet(framer_priv_t * mc, packet_t * p) {
-	return get_stream_packet(mc->stream, p);
-}
-
-static int n_setup_headers(framer_priv_t * mc,
nut_stream_header_t * s) {
-	*s = mc->stream->sh;
-	return 0; // nothing to do
-}
-
-static framer_priv_t * n_init(stream_t * s) {
-	framer_priv_t * mc = malloc(sizeof(framer_priv_t));
-	mc->stream = s;
-	return mc;
-}
-
-static void n_uninit(framer_priv_t * mc) {
-	free(mc);
-}
-
-framer_t null_framer = {
-	e_null,
-	n_init,
-	n_setup_headers,
-	n_get_packet,
-	n_uninit,
-	NULL
-};
-
 
 #ifdef AVI_PROG
 void ready_stream(stream_t * streams){}

Added: trunk/nututils/framer_mp3.c
============================================================
==================
--- (empty file)
+++ trunk/nututils/framer_mp3.c	Sat Nov  4 13:05:13 2006
 -0,0
+1,36 
+// (C) 2005-2006 Oded Shimon
+// This file is available under the MIT/X license, see
COPYING
+
+#include "nutmerge.h"
+
+struct framer_priv_s {
+	stream_t * stream;
+};
+
+static int get_packet(framer_priv_t * mp, packet_t * p) {
+	return get_stream_packet(mp->stream, p);
+}
+
+static int setup_headers(framer_priv_t * mp,
nut_stream_header_t * s) {
+	*s = mp->stream->sh;
+	return 0; // nothing to do
+}
+
+static framer_priv_t * init(stream_t * s) {
+	framer_priv_t * mp = malloc(sizeof(framer_priv_t));
+	mp->stream = s;
+	return mp;
+}
+
+static void uninit(framer_priv_t * mp) {
+	free(mp);
+}
+
+framer_t mp3_framer = {
+	e_mp3,
+	init,
+	setup_headers,
+	get_packet,
+	uninit,
+	NULL
+};

Modified: trunk/nututils/nutmerge.c
============================================================
==================
--- trunk/nututils/nutmerge.c	(original)
+++ trunk/nututils/nutmerge.c	Sat Nov  4 13:05:13 2006
 -20,12
+20,12 
 
 extern framer_t vorbis_framer;
 extern framer_t mpeg4_framer;
-extern framer_t null_framer;
+extern framer_t mp3_framer;
 
 framer_t * nframers[] = {
 	&vorbis_framer,
 	&mpeg4_framer,
-	&null_framer,
+	&mp3_framer,
 	NULL
 };
 

Modified: trunk/nututils/nutmerge.h
============================================================
==================
--- trunk/nututils/nutmerge.h	(original)
+++ trunk/nututils/nutmerge.h	Sat Nov  4 13:05:13 2006
 -20,7
+20,7 
 enum nutmerge_codecs {
 	e_vorbis,
 	e_mpeg4,
-	e_null,
+	e_mp3,
 };
 
 typedef struct {
_______________________________________________
NUT-devel mailing list
NUT-develmplayerhq.hu

http://lists.mplayerhq.hu/mailman/listinfo/nut-devel
[1]

about | contact  Other archives ( Real Estate discussion Medical topics )