コード例 #1
0
ファイル: siff.c プロジェクト: pengdu/freescale_omx_framework
static int siff_parse_vbv1(AVFormatContext *s, SIFFContext *c, AVIOContext *pb)
{
	AVStream *st;
	int width, height;

	if (avio_rl32(pb) != TAG_VBHD)
	{
		av_log(s, AV_LOG_ERROR, "Header chunk is missing\n");
		return -1;
	}
	if(avio_rb32(pb) != 32)
	{
		av_log(s, AV_LOG_ERROR, "Header chunk size is incorrect\n");
		return -1;
	}
	if(avio_rl16(pb) != 1)
	{
		av_log(s, AV_LOG_ERROR, "Incorrect header version\n");
		return -1;
	}
	width = avio_rl16(pb);
	height = avio_rl16(pb);
	avio_skip(pb, 4);
	c->frames = avio_rl16(pb);
	if(!c->frames)
	{
		av_log(s, AV_LOG_ERROR, "File contains no frames ???\n");
		return -1;
	}
	c->bits = avio_rl16(pb);
	c->rate = avio_rl16(pb);
	c->block_align = c->rate * (c->bits >> 3);

	avio_skip(pb, 16); //zeroes

	st = av_new_stream(s, 0);
	if (!st)
		return -1;
	st->codec->codec_type = AVMEDIA_TYPE_VIDEO;
	st->codec->codec_id   = CODEC_ID_VB;
	st->codec->codec_tag  = MKTAG('V', 'B', 'V', '1');
	st->codec->width      = width;
	st->codec->height     = height;
	st->codec->pix_fmt    = PIX_FMT_PAL8;
	av_set_pts_info(st, 16, 1, 12);

	c->cur_frame = 0;
	c->has_video = 1;
	c->has_audio = !!c->rate;
	c->curstrm = -1;
	if (c->has_audio && create_audio_stream(s, c) < 0)
		return -1;
	return 0;
}
コード例 #2
0
ファイル: siff.c プロジェクト: OESF-DLNA/upnp-extension
static int siff_parse_soun(AVFormatContext *s, SIFFContext *c, ByteIOContext *pb)
{
    if (get_le32(pb) != TAG_SHDR){
        av_log(s, AV_LOG_ERROR, "Header chunk is missing\n");
        return -1;
    }
    if(get_be32(pb) != 8){
        av_log(s, AV_LOG_ERROR, "Header chunk size is incorrect\n");
        return -1;
    }
    url_fskip(pb, 4); //unknown value
    c->rate = get_le16(pb);
    c->bits = get_le16(pb);
    c->block_align = c->rate * (c->bits >> 3);
    return create_audio_stream(s, c);
}
コード例 #3
0
ファイル: ffmpeg-mux.c プロジェクト: kustom666/obs-studio
static bool init_streams(struct ffmpeg_mux *ffm)
{
	if (ffm->params.has_video)
		create_video_stream(ffm);

	if (ffm->params.tracks) {
		ffm->audio_streams =
			calloc(1, ffm->params.tracks * sizeof(void*));

		for (int i = 0; i < ffm->params.tracks; i++)
			create_audio_stream(ffm, i);
	}

	if (!ffm->video_stream && !ffm->num_audio_streams)
		return false;

	return true;
}