Sensoray 819 Windows SDK User Manual
Page 16

int
_tmain(
int
argc, _TCHAR* argv[])
{
int
channels;
S819_CHAN s819chan;
HCNODE hcnode;
BUFFER buf;
int
rc;
FILE *fin;
int
i = 0;
char
name[60];
int
vtrack;
muxer_handle m;
sprintf(name,
"c:\\temp\\test%d.264"
, i);
// for H264 file
fin = fopen(name,
"wb"
);
m = mp4_writer_create();
mp4_file_name_ascii(m,
"c:\\temp\\test.mp4"
);
vtrack = mp4_video_track_create(m, AVC1, 90000, 3600, 0, 352, 240, 100, 31);
rc = S819_Enumerate(&channels);
S819_SetMode(0, &s819chan);
s819chan.psMode.resolution = RES_CIF;
S819_SetMode(1, &s819chan);
hcnode = S819_CreateCnode();
S819_AttachStreams(hcnode, 1, SMASK(STREAM_H264_PRI));
S819_StartStreams(hcnode, 1, SMASK(STREAM_H264_PRI));
for
(i = 0; i < 300; i++) {
unsigned
char
*pdata;
S819_WaitBuffer (hcnode, &buf);
pdata = (
unsigned
char
*) buf.buf;
if
(buf.stream == STREAM_AUDIO) {
S819_ReleaseBuffer(&buf);
continue
;
}
if
(buf.stream != STREAM_H264_PRI) {
S819_ReleaseBuffer(&buf);
continue
;
}
fwrite(buf.buf, 1, buf.length, fin);
mp4_write_track(m, vtrack, (
unsigned
char
*) buf.buf, buf.length, 3003);
S819_ReleaseBuffer(&buf);
}
mp4_write_movie(m);
// write the header into overflow buffer
mp4_delete(m);
fclose(fin);
S819_StopStreams(hcnode, 2, SMASK(STREAM_H264_PRI));
S819_DetachStreams(hcnode);
S819_DeleteCnode(hcnode);
S819_Close();
return
0;
}
16