summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demux_nsv.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmpdemux/demux_nsv.c')
-rw-r--r--libmpdemux/demux_nsv.c72
1 files changed, 36 insertions, 36 deletions
diff --git a/libmpdemux/demux_nsv.c b/libmpdemux/demux_nsv.c
index 9d3b1eceb0..fbb6e9c2bf 100644
--- a/libmpdemux/demux_nsv.c
+++ b/libmpdemux/demux_nsv.c
@@ -35,11 +35,11 @@
#include "stheader.h"
typedef struct {
- float v_pts;
+ float v_pts;
int video_pack_no;
unsigned int a_format;
unsigned int v_format;
- unsigned char fps;
+ unsigned char fps;
} nsv_priv_t;
#define HEADER_SEARCH_SIZE 256000
@@ -55,38 +55,38 @@ static void demux_seek_nsv ( demuxer_t *demuxer, float rel_seek_secs, float audi
static int demux_nsv_fill_buffer ( demuxer_t *demuxer, demux_stream_t *ds )
-{
+{
unsigned char hdr[17];
// for the extra data
unsigned char aux[6];
int i_aux = 0;
// videolen = audio chunk length, audiolen = video chunk length
- int videolen,audiolen;
+ int videolen,audiolen;
sh_video_t *sh_video = demuxer->video->sh;
sh_audio_t *sh_audio = demuxer->audio->sh;
nsv_priv_t * priv = demuxer->priv;
- // if the audio/video chunk has no new header the first 2 bytes will be discarded 0xBEEF
+ // if the audio/video chunk has no new header the first 2 bytes will be discarded 0xBEEF
// or rather 0xEF 0xBE
stream_read(demuxer->stream,hdr,7);
if(stream_eof(demuxer->stream)) return 0;
// sometimes instead of 0xBEEF as described for the next audio/video chunk we get
// a whole new header
-
+
mp_dbg(MSGT_DEMUX,MSGL_DBG2,"demux_nsv: %08X %08X\n",hdr[0]<<8|hdr[1],stream_tell(demuxer->stream));
switch(hdr[0]<<8|hdr[1]) {
case 0x4E53:
if(hdr[2]==0x56 && hdr[3]==0x73){
// NSVs
- // get the header since there is no more metaheader after the first one
+ // get the header since there is no more metaheader after the first one
// there is no more need to skip that
stream_read(demuxer->stream,hdr+7,17-7);
stream_read(demuxer->stream,hdr,7);
}
break;
-
+
case 0xEFBE:
break;
@@ -111,22 +111,22 @@ static int demux_nsv_fill_buffer ( demuxer_t *demuxer, demux_stream_t *ds )
videolen=(hdr[2]>>4)|(hdr[3]<<4)|(hdr[4]<<0xC);
//check if we got extra data like subtitles here
if( (hdr[2]&0x0f) != 0x0 ) {
- stream_read( demuxer->stream, aux, 6);
+ stream_read( demuxer->stream, aux, 6);
i_aux = aux[0]|aux[1]<<8;
- // We skip this extra data
+ // We skip this extra data
stream_skip( demuxer->stream, i_aux );
i_aux+=6;
videolen -= i_aux;
}
-
- // we need to return an empty packet when the
- // video frame is empty otherwise the stream will fasten up
+
+ // we need to return an empty packet when the
+ // video frame is empty otherwise the stream will fasten up
if(sh_video) {
if( (hdr[2]&0x0f) != 0x0 )
ds_read_packet(demuxer->video,demuxer->stream,videolen,priv->v_pts,demuxer->filepos-i_aux,0);
- else
+ else
ds_read_packet(demuxer->video,demuxer->stream,videolen,priv->v_pts,demuxer->filepos,0);
}
else
@@ -134,8 +134,8 @@ static int demux_nsv_fill_buffer ( demuxer_t *demuxer, demux_stream_t *ds )
// read audio:
audiolen=(hdr[5])|(hdr[6]<<8);
- // we need to return an empty packet when the
- // audio frame is empty otherwise the stream will fasten up
+ // we need to return an empty packet when the
+ // audio frame is empty otherwise the stream will fasten up
if(sh_audio) {
ds_read_packet(demuxer->audio,demuxer->stream,audiolen,priv->v_pts,demuxer->filepos+videolen,0);
}
@@ -145,7 +145,7 @@ static int demux_nsv_fill_buffer ( demuxer_t *demuxer, demux_stream_t *ds )
++priv->video_pack_no;
return 1;
-
+
}
@@ -157,23 +157,23 @@ static demuxer_t* demux_open_nsv ( demuxer_t* demuxer )
unsigned char buf[10];
sh_video_t *sh_video = NULL;
sh_audio_t *sh_audio = NULL;
-
-
+
+
nsv_priv_t * priv = malloc(sizeof(nsv_priv_t));
demuxer->priv=priv;
priv->video_pack_no=0;
/* disable seeking yet to be fixed*/
demuxer->seekable = 0;
-
+
stream_read(demuxer->stream,hdr,4);
if(stream_eof(demuxer->stream)) return 0;
-
+
if(hdr[0]==0x4E && hdr[1]==0x53 && hdr[2]==0x56){
// NSV header!
if(hdr[3]==0x73){
// NSVs
- stream_read(demuxer->stream,hdr+4,17-4);
+ stream_read(demuxer->stream,hdr+4,17-4);
}
if(hdr[3]==0x66){
@@ -181,9 +181,9 @@ static demuxer_t* demux_open_nsv ( demuxer_t* demuxer )
int len=stream_read_dword_le(demuxer->stream);
// TODO: parse out metadata!!!!
stream_skip(demuxer->stream,len-8);
-
+
// NSVs
- stream_read(demuxer->stream,hdr,17);
+ stream_read(demuxer->stream,hdr,17);
if (stream_eof(demuxer->stream) || strncmp(hdr, "NSVs", 4))
return 0;
}
@@ -202,9 +202,9 @@ static demuxer_t* demux_open_nsv ( demuxer_t* demuxer )
priv->a_format=mmioFOURCC(hdr[8],hdr[9],hdr[10],hdr[11]);
}
- // store hdr fps
+ // store hdr fps
priv->fps=hdr[16];
-
+
if ((demuxer->video->id != -2) && strncmp(hdr+4,"NONE", 4)) {
/* Create a new video stream header */
sh_video = new_sh_video ( demuxer, 0 );
@@ -219,23 +219,23 @@ static demuxer_t* demux_open_nsv ( demuxer_t* demuxer )
* video_read_properties() will choke
*/
sh_video->ds = demuxer->video;
-
+
// bytes 4-7 video codec fourcc
priv->v_format = sh_video->format=mmioFOURCC(hdr[4],hdr[5],hdr[6],hdr[7]);
-
+
// new video stream! parse header
sh_video->disp_w=hdr[12]|(hdr[13]<<8);
sh_video->disp_h=hdr[14]|(hdr[15]<<8);
sh_video->bih=calloc(1,sizeof(BITMAPINFOHEADER));
sh_video->bih->biSize=sizeof(BITMAPINFOHEADER);
- sh_video->bih->biPlanes=1;
+ sh_video->bih->biPlanes=1;
sh_video->bih->biBitCount=24;
sh_video->bih->biWidth=hdr[12]|(hdr[13]<<8);
sh_video->bih->biHeight=hdr[14]|(hdr[15]<<8);
memcpy(&sh_video->bih->biCompression,hdr+4,4);
sh_video->bih->biSizeImage=sh_video->bih->biWidth*sh_video->bih->biHeight*3;
- // here we search for the correct keyframe
+ // here we search for the correct keyframe
// vp6 keyframe is when the 2nd byte of the vp6 header is
// 0x36 for VP61 and 0x46 for VP62
if((priv->v_format==mmioFOURCC('V','P','6','1')) ||
@@ -264,8 +264,8 @@ static demuxer_t* demux_open_nsv ( demuxer_t* demuxer )
// data starts 10 bytes before current pos but later
// we seek 17 backwards
stream_skip(demuxer->stream,7);
- }
-
+ }
+
switch(priv->fps){
case 0x80:
sh_video->fps=30;
@@ -287,14 +287,14 @@ static demuxer_t* demux_open_nsv ( demuxer_t* demuxer )
break;
default:
sh_video->fps = (float)priv->fps;
- }
+ }
sh_video->frametime = (float)1.0 / (float)sh_video->fps;
}
- }
+ }
// seek to start of NSV header
stream_seek(demuxer->stream,stream_tell(demuxer->stream)-17);
-
+
return demuxer;
}
@@ -304,7 +304,7 @@ static int nsv_check_file ( demuxer_t* demuxer )
int i;
mp_msg ( MSGT_DEMUX, MSGL_V, "Checking for Nullsoft Streaming Video\n" );
-
+
for (i = 0; i < HEADER_SEARCH_SIZE; i++) {
uint8_t c = stream_read_char(demuxer->stream);
if (stream_eof(demuxer->stream))