annotate libmpdemux/demux_lmlm4.c @ 24576:6704a924d4aa

According to MSDN a thread must call CoUninitialize once for each successful call it has made to CoInitialize or CoInitializeEx, including any call that returns S_FALSE. Only the CoUninitialize call corresponding to the CoInitialize or CoInitializeEx call that initialized the library can close it. patch by Gianluigi Tiesi, mplayer netfarm it
author diego
date Sun, 23 Sep 2007 20:37:33 +0000
parents ca0c0e094f1c
children 9d0b189ce1b2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11590
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
1 /*
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
2 LMLM4 MPEG4 Compression Card stream & file parser by Maxim Yevtyushkin <max@linuxmedialabs.com>
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
3 Based on SMJPEG file parser by Alex Beregszaszi
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
4
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
5 */
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
6
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
7 #include <stdio.h>
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
8 #include <stdlib.h>
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
9 #include <unistd.h>
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
10 #include <string.h> /* strtok */
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
11
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
12 #include "config.h"
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
13 #include "mp_msg.h"
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
14 #include "help_mp.h"
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
15
22605
4d81dbdf46b9 Add explicit location for headers from the stream/ directory.
diego
parents: 21421
diff changeset
16 #include "stream/stream.h"
11590
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
17 #include "demuxer.h"
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
18 #include "stheader.h"
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
19
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
20 typedef struct __FrameInfo
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
21 {
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
22 ssize_t frameSize;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
23 ssize_t paddingSize;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
24 int frameType;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
25 int channelNo;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
26 } FrameInfo;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
27
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
28 #define FRAMETYPE_I 0
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
29 #define FRAMETYPE_P 1
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
30 #define FRAMETYPE_B 2
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
31 #define FRAMETYPE_AUDIO_MPEG1L2 4
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
32 #define FRAMETYPE_AUDIO_ULAW 5
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
33 #define FRAMETYPE_AUDIO_ADPCM 6
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
34
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
35 #define PACKET_BLOCK_SIZE 0x00000200
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
36 #define PACKET_BLOCK_LAST 0x000001FF
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
37 #define PACKET_BLOCK_MASK 0xFFFFFE00
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
38
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
39 #define MAX_PACKET_SIZE 1048576 // 1 Mb
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
40
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
41 #define STREAM_START_CODE_SIZE 4
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
42
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
43 /*
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
44 // codes in MSB first
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
45 static unsigned int start_code [] =
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
46 {
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
47 0xB0010000, // VISUAL_OBJECT_SEQUENCE_START_CODE
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
48 0xB6010000, // VOP_START_CODE
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
49 0x04C4FDFF, // MPEG1LAYERII_START_CODE
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
50 0x00000000 // end of start codes list
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
51 };
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
52 */
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
53
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
54 static int imeHeaderValid(FrameInfo *frame)
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
55 {
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
56 if ( frame->channelNo > 7 ||
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
57 frame->frameSize > MAX_PACKET_SIZE || frame->frameSize <= 0)
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
58 {
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
59 mp_msg(MSGT_DEMUX, MSGL_V, "Invalid packet in LMLM4 stream: ch=%d size=%d\n", frame->channelNo, frame->frameSize);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
60 return 0;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
61 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
62 switch (frame->frameType) {
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
63 case FRAMETYPE_I:
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
64 case FRAMETYPE_P:
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
65 case FRAMETYPE_B:
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
66 case FRAMETYPE_AUDIO_MPEG1L2:
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
67 case FRAMETYPE_AUDIO_ULAW:
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
68 case FRAMETYPE_AUDIO_ADPCM:
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
69 break;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
70 default:
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
71 mp_msg(MSGT_DEMUX, MSGL_V, "Invalid packet in LMLM4 stream (wrong packet type %d)\n", frame->frameType);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
72 return 0;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
73 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
74 return 1;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
75 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
76
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
77 /*
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
78 int searchMPEG4Stream(demuxer_t* demuxer, IME6400Header *imeHeader)
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
79 {
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
80 void *data;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
81 ssize_t imeHeaderSize = sizeof(IME6400Header);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
82 ssize_t dataSize = sizeof(IME6400Header) * 3;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
83 ssize_t ptr = imeHeaderSize * 2;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
84 int errNo, startCodeNo;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
85 off_t pos;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
86
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
87 data = malloc(dataSize);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
88
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
89 imeHeaderSwap(imeHeader);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
90 memcpy(data + imeHeaderSize, imeHeader, imeHeaderSize);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
91
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
92 // printHex(data + imeHeaderSize, imeHeaderSize);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
93
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
94 while ((errNo = stream_read(demuxer->stream, data + imeHeaderSize * 2 , imeHeaderSize)) == imeHeaderSize)
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
95 {
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
96 // printHex(data + imeHeaderSize * 2, imeHeaderSize);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
97
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
98 pos = stream_tell(demuxer->stream);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
99 while (dataSize - ptr >= STREAM_START_CODE_SIZE) {
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
100 startCodeNo = 0;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
101 while (start_code[startCodeNo])
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
102 {
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
103 if (memcmp(&start_code[startCodeNo], data + ptr, STREAM_START_CODE_SIZE) == 0) // start code match
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
104 {
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
105 memcpy(imeHeader, data + ptr - imeHeaderSize, imeHeaderSize);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
106 imeHeaderSwap(imeHeader);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
107 if (imeHeaderValid(imeHeader))
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
108 {
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
109 stream_seek(demuxer->stream, pos - (dataSize - ptr));
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
110 free(data);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
111 return 0;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
112 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
113 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
114 startCodeNo++;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
115 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
116 ptr++;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
117 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
118 memcpy(data,data + imeHeaderSize, imeHeaderSize * 2);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
119 ptr -= imeHeaderSize;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
120 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
121
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
122 free(data);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
123 return errNo;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
124 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
125 */
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
126
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
127 static int getFrame(demuxer_t *demuxer, FrameInfo *frameInfo)
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
128 {
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
129 unsigned int packetSize;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
130
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
131 frameInfo->channelNo = stream_read_word(demuxer->stream);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
132 frameInfo->frameType = stream_read_word(demuxer->stream);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
133 packetSize=stream_read_dword(demuxer->stream);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
134
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
135 if(stream_eof(demuxer->stream)){
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
136 frameInfo->frameSize = 0;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
137 return 0;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
138 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
139
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
140 frameInfo->frameSize = packetSize - 8; //sizeof(IME6400Header);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
141 frameInfo->paddingSize = (packetSize & PACKET_BLOCK_LAST) ? PACKET_BLOCK_SIZE - (packetSize & PACKET_BLOCK_LAST) : 0;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
142
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
143 mp_msg(MSGT_DEMUX, MSGL_DBG2, "typ: %d chan: %d size: %d pad: %d\n",
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
144 frameInfo->frameType,
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
145 frameInfo->channelNo,
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
146 frameInfo->frameSize,
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
147 frameInfo->paddingSize);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
148
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
149 if(!imeHeaderValid(frameInfo)){
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
150 // skip this packet
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
151 stream_skip(demuxer->stream,PACKET_BLOCK_SIZE-8);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
152 frameInfo->frameSize = 0;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
153 return -1;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
154 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
155
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
156 return 1;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
157 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
158
16175
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
159 static int lmlm4_check_file(demuxer_t* demuxer)
11590
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
160 {
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
161 FrameInfo frameInfo;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
162 unsigned int first;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
163
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
164 mp_msg(MSGT_DEMUX, MSGL_V, "Checking for LMLM4 Stream Format\n");
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
165
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
166 if(getFrame(demuxer, &frameInfo)!=1){
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
167 stream_skip(demuxer->stream,-8);
11790
rfelker
parents: 11590
diff changeset
168 mp_msg(MSGT_DEMUX, MSGL_V, "LMLM4 Stream Format not found\n");
11590
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
169 return 0;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
170 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
171 first=stream_read_dword(demuxer->stream);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
172 stream_skip(demuxer->stream,-12);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
173
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
174 mp_msg(MSGT_DEMUXER,MSGL_V,"LMLM4: first=0x%08X\n",first);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
175
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
176 switch(frameInfo.frameType){
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
177 case FRAMETYPE_AUDIO_MPEG1L2:
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
178 if( (first & 0xffe00000) != 0xffe00000 ){
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
179 mp_msg(MSGT_DEMUXER,MSGL_V,"LMLM4: not mpeg audio\n");
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
180 return 0;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
181 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
182 if((4-((first>>17)&3))!=2){
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
183 mp_msg(MSGT_DEMUXER,MSGL_V,"LMLM4: not layer-2\n");
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
184 return 0;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
185 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
186 if(((first>>10)&0x3)==3){
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
187 mp_msg(MSGT_DEMUXER,MSGL_V,"LMLM4: invalid audio sampelrate\n");
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
188 return 0;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
189 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
190 mp_msg(MSGT_DEMUXER,MSGL_V,"LMLM4: first packet is audio, header checks OK!\n");
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
191 break;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
192 // TODO: add checks for video header too, for case of disabled audio
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
193 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
194
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
195
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
196 // stream_reset(demuxer->stream);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
197 mp_msg(MSGT_DEMUX, MSGL_V, "LMLM4 Stream Format found\n");
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
198
16175
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
199 return DEMUXER_TYPE_LMLM4;
11590
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
200 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
201
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
202 static int video = 0;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
203 static int frames= 0;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
204
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
205 // return value:
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
206 // 0 = EOF or no stream found
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
207 // 1 = successfully read a packet
16175
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
208 static int demux_lmlm4_fill_buffer(demuxer_t *demux, demux_stream_t *ds)
11590
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
209 {
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
210 FrameInfo frameInfo;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
211 double pts;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
212 int id=1;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
213 int ret;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
214
24357
ca0c0e094f1c warning fix:
diego
parents: 22605
diff changeset
215 //hdr:
11590
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
216 demux->filepos = stream_tell(demux->stream);
17366
934380353fd6 massive attack: mp_msg printf format fixes
rathann
parents: 16175
diff changeset
217 mp_msg(MSGT_DEMUX, MSGL_DBG2, "fpos = %"PRId64"\n", (int64_t)demux->filepos);
11590
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
218
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
219 ret=getFrame(demux, &frameInfo);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
220 if(ret<=0) return ret; // EOF/error
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
221
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
222 pts=demux->video->sh ? frames*((sh_video_t*)(demux->video->sh))->frametime : 0;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
223
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
224 switch(frameInfo.frameType){
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
225 case FRAMETYPE_AUDIO_MPEG1L2:
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
226 mp_dbg(MSGT_DEMUX, MSGL_DBG2, "Audio Packet\n");
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
227 if (!video)
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
228 {
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
229 stream_skip(demux->stream, frameInfo.frameSize + frameInfo.paddingSize);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
230 mp_msg(MSGT_DEMUX, MSGL_V, "Skip Audio Packet\n");
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
231 return -1; //goto hdr;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
232 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
233 if(demux->audio->id==-1){
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
234 if(!demux->a_streams[id]) new_sh_audio(demux,id);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
235 demux->audio->id=id;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
236 demux->audio->sh=demux->a_streams[id];
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
237 ((sh_audio_t*)(demux->audio->sh))->format=0x50; // mpeg audio layer 1/2
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
238 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
239 if(demux->audio->id==id)
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
240 ds_read_packet(demux->audio, demux->stream, frameInfo.frameSize,
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
241 pts, demux->filepos, 0);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
242 else
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
243 stream_skip(demux->stream,frameInfo.frameSize);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
244 break;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
245 case FRAMETYPE_I:
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
246 if (!video) {
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
247 video = 1;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
248 mp_dbg(MSGT_DEMUX, MSGL_DBG2, "First Video Packet\n");
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
249 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
250 case FRAMETYPE_P:
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
251 frames=(frames+1)&(1024*1024-1); // wrap around at 4 hrs to avoid inaccurate float calculations
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
252 if (!video)
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
253 {
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
254 stream_skip(demux->stream, frameInfo.frameSize + frameInfo.paddingSize);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
255 mp_msg(MSGT_DEMUX, MSGL_V, "Skip Video P Packet\n");
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
256 return -1; //goto hdr;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
257 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
258 mp_dbg(MSGT_DEMUX, MSGL_DBG2, "Video Packet\n");
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
259 if(demux->video->id==-1){
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
260 if(!demux->v_streams[id]) new_sh_video(demux,id);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
261 demux->video->id=id;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
262 demux->video->sh=demux->v_streams[id];
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
263 ((sh_video_t*)(demux->video->sh))->format=0x10000004; // mpeg4-ES
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
264 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
265 if(demux->video->id==id)
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
266 ds_read_packet(demux->video, demux->stream, frameInfo.frameSize,
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
267 pts, demux->filepos, 0);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
268 break;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
269 default:
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
270 stream_skip(demux->stream,frameInfo.frameSize);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
271 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
272
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
273 stream_skip(demux->stream, frameInfo.paddingSize);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
274
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
275 return 1;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
276 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
277
16175
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
278 static demuxer_t* demux_open_lmlm4(demuxer_t* demuxer){
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
279 sh_audio_t *sh_audio=NULL;
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
280 sh_video_t *sh_video=NULL;
11590
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
281
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
282 #if 0
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
283 sh_video_t* sh_video;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
284 sh_audio_t* sh_audio;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
285 unsigned int htype = 0, hleng;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
286 int i = 0;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
287
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
288 sh_video = new_sh_video(demuxer, 0);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
289 demuxer->video->sh = sh_video;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
290 sh_video->ds = demuxer->video;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
291 sh_video->disp_w = 640;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
292 sh_video->disp_h = 480;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
293 sh_video->format = mmioFOURCC('D','I','V','X');
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
294
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
295 sh_video->bih = malloc(sizeof(BITMAPINFOHEADER));
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
296 memset(sh_video->bih, 0, sizeof(BITMAPINFOHEADER));
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
297
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
298 /* these are false values */
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
299 sh_video->bih->biSize = 40;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
300 sh_video->bih->biWidth = sh_video->disp_w;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
301 sh_video->bih->biHeight = sh_video->disp_h;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
302 sh_video->bih->biPlanes = 3;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
303 sh_video->bih->biBitCount = 16;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
304 sh_video->bih->biCompression = sh_video->format;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
305 sh_video->bih->biSizeImage = sh_video->disp_w*sh_video->disp_h;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
306
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
307 sh_audio = new_sh_audio(demuxer, 0);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
308 demuxer->audio->sh = sh_audio;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
309 sh_audio->ds = demuxer->audio;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
310
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
311 sh_audio->wf = malloc(sizeof(WAVEFORMATEX));
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
312 memset(sh_audio->wf, 0, sizeof(WAVEFORMATEX));
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
313
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
314 sh_audio->samplerate = 48000;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
315 sh_audio->wf->wBitsPerSample = 16;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
316 sh_audio->channels = 2;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
317 sh_audio->format = 0x50;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
318 sh_audio->wf->wFormatTag = sh_audio->format;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
319 sh_audio->wf->nChannels = sh_audio->channels;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
320 sh_audio->wf->nSamplesPerSec = sh_audio->samplerate;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
321 sh_audio->wf->nAvgBytesPerSec = sh_audio->wf->nChannels*
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
322 sh_audio->wf->wBitsPerSample*sh_audio->wf->nSamplesPerSec/8;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
323 sh_audio->wf->nBlockAlign = sh_audio->channels *2;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
324 sh_audio->wf->cbSize = 0;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
325
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
326 #endif
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
327
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
328 demuxer->seekable = 0;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
329
16175
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
330 if(!ds_fill_buffer(demuxer->video)){
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
331 mp_msg(MSGT_DEMUXER,MSGL_INFO,"LMLM4: " MSGTR_MissingVideoStream);
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
332 demuxer->video->sh=NULL;
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
333 } else {
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
334 sh_video=demuxer->video->sh;sh_video->ds=demuxer->video;
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
335 }
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
336 if(demuxer->audio->id!=-2) {
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
337 if(!ds_fill_buffer(demuxer->audio)){
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
338 mp_msg(MSGT_DEMUXER,MSGL_INFO,"LMLM4: " MSGTR_MissingAudioStream);
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
339 demuxer->audio->sh=NULL;
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
340 } else {
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
341 sh_audio=demuxer->audio->sh;sh_audio->ds=demuxer->audio;
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
342 }
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
343 }
11590
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
344
16175
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
345 return demuxer;
11590
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
346 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
347
16175
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
348 static void demux_close_lmlm4(demuxer_t *demuxer)
11590
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
349 {
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
350 // printf("Close LMLM4 Stream\n");
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
351 return;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents:
diff changeset
352 }
16175
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
353
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
354
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
355 demuxer_desc_t demuxer_desc_lmlm4 = {
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
356 "LMLM4 MPEG4 Compression Card stream demuxer",
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
357 "lmlm4",
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
358 "RAW LMLM4",
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
359 "Maxim Yevtyushkin",
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
360 "",
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
361 DEMUXER_TYPE_LMLM4,
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
362 0, // unsafe autodetect
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
363 lmlm4_check_file,
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
364 demux_lmlm4_fill_buffer,
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
365 demux_open_lmlm4,
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
366 demux_close_lmlm4,
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
367 NULL,
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
368 NULL
6b86089c2edd Demuxer modularization
rtognimp
parents: 11790
diff changeset
369 };