annotate libmpdemux/muxer_rawvideo.c @ 27319:09cf111f68b8

Revert to previous dependency checking behavior. Take included header files into account when generating dependency files. This has problems when header files are removed or renamed, but does not silently miscompile files.
author diego
date Sat, 26 Jul 2008 18:36:48 +0000
parents 36948c17c4af
children d643e4643313
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12016
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
1
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
2 #include <stdio.h>
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
3 #include <stdlib.h>
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
4 #include <string.h>
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
5 #include <inttypes.h>
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
6 #include <unistd.h>
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
7
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
8 #include "config.h"
22605
4d81dbdf46b9 Add explicit location for headers from the stream/ directory.
diego
parents: 21660
diff changeset
9 //#include "stream/stream.h"
12016
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
10 //#include "demuxer.h"
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
11 //#include "stheader.h"
13183
ca4c07c87e6f use correct headers
rathann
parents: 12016
diff changeset
12 #include "aviheader.h"
ca4c07c87e6f use correct headers
rathann
parents: 12016
diff changeset
13 #include "ms_hdr.h"
12016
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
14
22605
4d81dbdf46b9 Add explicit location for headers from the stream/ directory.
diego
parents: 21660
diff changeset
15 #include "stream/stream.h"
12016
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
16 #include "muxer.h"
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
17
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
18 static muxer_stream_t* rawvideofile_new_stream(muxer_t *muxer,int type){
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
19 muxer_stream_t* s;
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
20 if (!muxer) return NULL;
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
21 s=malloc(sizeof(muxer_stream_t));
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
22 memset(s,0,sizeof(muxer_stream_t));
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
23 if(!s) return NULL; // no mem!?
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
24 muxer->streams[muxer->avih.dwStreams]=s;
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
25 s->type=type;
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
26 s->id=muxer->avih.dwStreams;
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
27 s->timer=0.0;
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
28 s->size=0;
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
29 s->muxer=muxer;
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
30 switch(type){
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
31 case MUXER_TYPE_VIDEO:
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
32 s->ckid=mmioFOURCC(('0'+s->id/10),('0'+(s->id%10)),'d','c');
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
33 s->h.fccType=streamtypeVIDEO;
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
34 if(!muxer->def_v) muxer->def_v=s;
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
35 break;
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
36 }
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
37 muxer->avih.dwStreams++;
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
38 return s;
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
39 }
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
40
21660
ca9da45d13e9 muxers now write to output muxer->stream rather than to muxer->file
nicodvb
parents: 21421
diff changeset
41 static void write_rawvideo_chunk(stream_t *stream,int len,void* data){
12016
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
42 if(len>0){
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
43 if(data){
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
44 // DATA
21660
ca9da45d13e9 muxers now write to output muxer->stream rather than to muxer->file
nicodvb
parents: 21421
diff changeset
45 stream_write_buffer(stream,data,len);
12016
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
46 }
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
47 }
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
48 }
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
49
17487
fa17424b4c7b change muxer_write_chunk() so that pts/dts _could_ be passed from encoder to muxer
michael
parents: 17023
diff changeset
50 static void rawvideofile_write_chunk(muxer_stream_t *s,size_t len,unsigned int flags, double dts, double pts){
12016
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
51 muxer_t *muxer=s->muxer;
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
52
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
53 // write out the chunk:
16805
50fb26acbcba processing audio is sometimes essential for a/v sync, so 1000l to
rfelker
parents: 14753
diff changeset
54 if (s->type == MUXER_TYPE_VIDEO)
21660
ca9da45d13e9 muxers now write to output muxer->stream rather than to muxer->file
nicodvb
parents: 21421
diff changeset
55 write_rawvideo_chunk(muxer->stream,len,s->buffer); /* unsigned char */
12016
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
56
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
57 // if((unsigned int)len>s->h.dwSuggestedBufferSize) s->h.dwSuggestedBufferSize=len;
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
58
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
59 }
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
60
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
61 static void rawvideofile_write_header(muxer_t *muxer){
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
62 return;
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
63 }
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
64
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
65 static void rawvideofile_write_index(muxer_t *muxer){
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
66 return;
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
67 }
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
68
14753
70c446099f40 new mpeg muxer compatible with dvd/[s]vcd; small changes in the muxer layer (sanity checks in the muxer_init functions)
nicodvb
parents: 13183
diff changeset
69 int muxer_init_muxer_rawvideo(muxer_t *muxer){
12016
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
70 muxer->cont_new_stream = &rawvideofile_new_stream;
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
71 muxer->cont_write_chunk = &rawvideofile_write_chunk;
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
72 muxer->cont_write_header = &rawvideofile_write_header;
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
73 muxer->cont_write_index = &rawvideofile_write_index;
14753
70c446099f40 new mpeg muxer compatible with dvd/[s]vcd; small changes in the muxer layer (sanity checks in the muxer_init functions)
nicodvb
parents: 13183
diff changeset
74 return 1;
12016
b962aaad2940 rawvideo muxer patch by John Earl <jwe21@cam.ac.uk>
ranma
parents:
diff changeset
75 }