Lines Matching refs:fourxm
96 FourxmDemuxContext *fourxm, uint8_t *buf, int size,
110 avpriv_set_pts_info(st, 60, fourxm->fps.den, fourxm->fps.num);
112 fourxm->video_stream_index = st->index;
130 FourxmDemuxContext *fourxm, uint8_t *buf, int size,
146 if (track + 1 > fourxm->track_count) {
147 if (av_reallocp_array(&fourxm->tracks, track + 1, sizeof(AudioTrack)))
149 memset(&fourxm->tracks[fourxm->track_count], 0,
150 sizeof(AudioTrack) * (track + 1 - fourxm->track_count));
151 fourxm->track_count = track + 1;
153 if (fourxm->tracks[track].bits)
156 fourxm->tracks[track].adpcm = AV_RL32(buf + 12);
157 fourxm->tracks[track].channels = AV_RL32(buf + 36);
158 fourxm->tracks[track].sample_rate = AV_RL32(buf + 40);
159 fourxm->tracks[track].bits = AV_RL32(buf + 44);
160 fourxm->tracks[track].audio_pts = 0;
162 if (fourxm->tracks[track].channels <= 0 ||
163 fourxm->tracks[track].channels > FF_SANE_NB_CHANNELS ||
164 fourxm->tracks[track].sample_rate <= 0 ||
165 fourxm->tracks[track].bits <= 0 ||
166 fourxm->tracks[track].bits > INT_MAX / FF_SANE_NB_CHANNELS) {
170 if (!fourxm->tracks[track].adpcm && fourxm->tracks[track].bits<8) {
175 if (fourxm->tracks[track].sample_rate > INT64_MAX / fourxm->tracks[track].bits / fourxm->tracks[track].channels) {
177 fourxm->tracks[track].sample_rate, fourxm->tracks[track].bits, fourxm->tracks[track].channels);
187 avpriv_set_pts_info(st, 60, 1, fourxm->tracks[track].sample_rate);
189 fourxm->tracks[track].stream_index = st->index;
193 st->codecpar->ch_layout.nb_channels = fourxm->tracks[track].channels;
194 st->codecpar->sample_rate = fourxm->tracks[track].sample_rate;
195 st->codecpar->bits_per_coded_sample = fourxm->tracks[track].bits;
202 if (fourxm->tracks[track].adpcm){
218 FourxmDemuxContext *fourxm = s->priv_data;
222 fourxm->track_count = 0;
223 fourxm->tracks = NULL;
224 fourxm->fps = (AVRational){1,1};
225 fourxm->video_stream_index = -1;
261 fourxm->fps = av_d2q(av_int2float(AV_RL32(&header[i + 12])), 10000);
263 if ((ret = parse_vtrk(s, fourxm, header + i, size,
269 if ((ret = parse_strk(s, fourxm, header + i, size,
286 fourxm->video_pts = -1; /* first frame will push to 0 */
297 FourxmDemuxContext *fourxm = s->priv_data;
317 fourxm->video_pts++;
333 if (fourxm->video_stream_index < 0)
337 pkt->stream_index = fourxm->video_stream_index;
338 pkt->pts = fourxm->video_pts;
356 if (track_number < fourxm->track_count &&
357 fourxm->tracks[track_number].channels > 0) {
362 fourxm->tracks[track_number].stream_index;
363 pkt->pts = fourxm->tracks[track_number].audio_pts;
368 if (fourxm->tracks[track_number].adpcm)
369 audio_frame_count -= 2 * (fourxm->tracks[track_number].channels);
370 audio_frame_count /= fourxm->tracks[track_number].channels;
371 if (fourxm->tracks[track_number].adpcm) {
375 (fourxm->tracks[track_number].bits / 8);
376 fourxm->tracks[track_number].audio_pts += audio_frame_count;
392 FourxmDemuxContext *fourxm = s->priv_data;
394 av_freep(&fourxm->tracks);