Force audio stream frames to always be keyframes.
This commit is contained in:
parent
83633b11f3
commit
1c6a08e868
|
@ -152,9 +152,13 @@ gwavi_t::write_stream_header(FILE *fp, struct gwavi_stream_header_t *stream_head
|
||||||
goto write_int_failed;
|
goto write_int_failed;
|
||||||
if (write_int(fp, stream_header->sample_size) == -1)
|
if (write_int(fp, stream_header->sample_size) == -1)
|
||||||
goto write_int_failed;
|
goto write_int_failed;
|
||||||
if (write_int(fp, 0) == -1)
|
if (write_short(fp, 0) == -1)
|
||||||
goto write_int_failed;
|
goto write_int_failed;
|
||||||
if (write_int(fp, 0) == -1)
|
if (write_short(fp, 0) == -1)
|
||||||
|
goto write_int_failed;
|
||||||
|
if (write_short(fp, stream_header->image_width) == -1)
|
||||||
|
goto write_int_failed;
|
||||||
|
if (write_short(fp, stream_header->image_height) == -1)
|
||||||
goto write_int_failed;
|
goto write_int_failed;
|
||||||
|
|
||||||
if ((t = ftell(fp)) == -1) {
|
if ((t = ftell(fp)) == -1) {
|
||||||
|
@ -464,7 +468,7 @@ gwavi_t::write_index(FILE *fp)
|
||||||
{
|
{
|
||||||
long marker, t;
|
long marker, t;
|
||||||
unsigned int offset = 4;
|
unsigned int offset = 4;
|
||||||
unsigned int r;
|
unsigned int r, flags;
|
||||||
//char fourcc[8];
|
//char fourcc[8];
|
||||||
|
|
||||||
if (offsets.size() == 0 )
|
if (offsets.size() == 0 )
|
||||||
|
@ -486,6 +490,7 @@ gwavi_t::write_index(FILE *fp)
|
||||||
for (size_t i = 0; i < offsets.size(); i++)
|
for (size_t i = 0; i < offsets.size(); i++)
|
||||||
{
|
{
|
||||||
//peak_chunk( fp, offset, fourcc, &r );
|
//peak_chunk( fp, offset, fourcc, &r );
|
||||||
|
flags = 0;
|
||||||
|
|
||||||
if ( offsets[i].type == 0)
|
if ( offsets[i].type == 0)
|
||||||
{
|
{
|
||||||
|
@ -499,14 +504,10 @@ gwavi_t::write_index(FILE *fp)
|
||||||
|
|
||||||
if ( offsets[i].keyFrame )
|
if ( offsets[i].keyFrame )
|
||||||
{
|
{
|
||||||
if (write_int(fp, 0x10) == -1)
|
flags |= IF_KEYFRAME;
|
||||||
goto write_int_failed;
|
|
||||||
}
|
}
|
||||||
else
|
if (write_int(fp, flags) == -1)
|
||||||
{
|
|
||||||
if (write_int(fp, 0x00) == -1)
|
|
||||||
goto write_int_failed;
|
goto write_int_failed;
|
||||||
}
|
|
||||||
if (write_int(fp, offset) == -1)
|
if (write_int(fp, offset) == -1)
|
||||||
goto write_int_failed;
|
goto write_int_failed;
|
||||||
if (write_int(fp, offsets[i].len) == -1)
|
if (write_int(fp, offsets[i].len) == -1)
|
||||||
|
|
|
@ -180,6 +180,8 @@ gwavi_t::open(const char *filename, unsigned int width, unsigned int height,
|
||||||
stream_header_v.data_rate = 1000000;
|
stream_header_v.data_rate = 1000000;
|
||||||
stream_header_v.buffer_size = size;
|
stream_header_v.buffer_size = size;
|
||||||
stream_header_v.data_length = 0;
|
stream_header_v.data_length = 0;
|
||||||
|
stream_header_v.image_width = width;
|
||||||
|
stream_header_v.image_height = height;
|
||||||
|
|
||||||
/* set stream format */
|
/* set stream format */
|
||||||
stream_format_v.header_size = 40;
|
stream_format_v.header_size = 40;
|
||||||
|
@ -370,7 +372,7 @@ gwavi_t::add_audio( unsigned char *buffer, size_t len)
|
||||||
|
|
||||||
idx.len = len;
|
idx.len = len;
|
||||||
idx.type = 1;
|
idx.type = 1;
|
||||||
idx.keyFrame = 0;
|
idx.keyFrame = 1;
|
||||||
|
|
||||||
offsets.push_back( idx );
|
offsets.push_back( idx );
|
||||||
|
|
||||||
|
|
|
@ -103,6 +103,8 @@ struct gwavi_stream_header_t
|
||||||
*/
|
*/
|
||||||
int audio_quality;
|
int audio_quality;
|
||||||
unsigned int sample_size; /* dwSampleSize */
|
unsigned int sample_size; /* dwSampleSize */
|
||||||
|
int image_width;
|
||||||
|
int image_height;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct gwavi_stream_format_v_t
|
struct gwavi_stream_format_v_t
|
||||||
|
|
Loading…
Reference in New Issue