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-devel mplayerhq.hu
http://lists.mplayerhq.hu/mailman/listinfo/nut-devel
|