Lines Matching refs:wav
80 static void set_spdif(AVFormatContext *s, WAVDemuxContext *wav)
98 wav->spdif = 1;
124 static int64_t wav_seek_tag(WAVDemuxContext * wav, AVIOContext *s, int64_t offset, int whence)
126 offset += offset < INT64_MAX && offset + wav->unaligned & 1;
132 static int64_t find_tag(WAVDemuxContext * wav, AVIOContext *pb, uint32_t tag1)
140 size = next_tag(pb, &tag, wav->rifx);
143 wav_seek_tag(wav, pb, size, SEEK_CUR);
179 WAVDemuxContext *wav = s->priv_data;
183 ret = ff_get_wav_header(s, pb, st->codecpar, size, wav->rifx);
340 /* wav input */
349 WAVDemuxContext *wav = s->priv_data;
353 wav->unaligned = avio_tell(s->pb) & 1;
355 wav->smv_data_ofs = -1;
363 wav->rifx = 1;
414 size = next_tag(pb, &tag, wav->rifx);
447 next_tag_ofs = wav->data_end = avio_tell(pb) + data_size;
450 next_tag_ofs = wav->data_end = size ? next_tag_ofs : INT64_MAX;
452 av_log(s, AV_LOG_WARNING, "Ignoring maximum wav data size, "
455 next_tag_ofs = wav->data_end = INT64_MAX;
468 sample_count = (!wav->rifx ? avio_rl32(pb) : avio_rb32(pb));
479 // SMV file, a wav file with video appended.
485 wav->smv_given_first = 0;
489 wav->vst = vst;
501 wav->smv_data_ofs = avio_tell(pb) + (size - 5) * 3;
503 wav->smv_block_size = avio_rl24(pb);
504 if (!wav->smv_block_size)
510 wav->smv_frames_per_jpeg = avio_rl24(pb);
511 if (wav->smv_frames_per_jpeg > 65536) {
515 AV_WL32(vst->codecpar->extradata, wav->smv_frames_per_jpeg);
592 wav_seek_tag(wav, pb, next_tag_ofs, SEEK_SET) < 0) {
641 && wav->data_end <= avio_size(pb))
671 set_spdif(s, wav);
709 WAVDemuxContext *wav = s->priv_data;
712 if (CONFIG_SPDIF_DEMUXER && wav->spdif == 1)
715 if (wav->smv_data_ofs > 0) {
717 AVStream *vst = wav->vst;
724 wav->smv_last_stream = wav->smv_given_first ?
727 wav->smv_given_first = 1;
729 wav->smv_last_stream = !wav->smv_last_stream;
730 wav->smv_last_stream |= wav->audio_eof;
731 wav->smv_last_stream &= !wav->smv_eof;
732 if (wav->smv_last_stream) {
734 uint64_t new_pos = wav->smv_data_ofs +
735 wav->smv_block * (int64_t)wav->smv_block_size;
741 if (size > wav->smv_block_size) {
749 pkt->pts = wav->smv_block * wav->smv_frames_per_jpeg;
750 pkt->duration = wav->smv_frames_per_jpeg;
751 wav->smv_block++;
757 wav->smv_eof = 1;
764 left = wav->data_end - avio_tell(s->pb);
765 if (wav->ignore_length)
768 if (CONFIG_W64_DEMUXER && wav->w64)
771 left = find_tag(wav, s->pb, MKTAG('d', 'a', 't', 'a'));
773 wav->audio_eof = 1;
774 if (wav->smv_data_ofs > 0 && !wav->smv_eof)
780 wav->data_end = avio_tell(s->pb) + left;
783 size = wav->max_size;
801 WAVDemuxContext *wav = s->priv_data;
802 AVStream *ast = s->streams[0], *vst = wav->vst;
803 wav->smv_eof = 0;
804 wav->audio_eof = 0;
808 if (wav->smv_data_ofs > 0) {
814 if (wav->smv_frames_per_jpeg > 0) {
815 wav->smv_block = smv_timestamp / wav->smv_frames_per_jpeg;
840 .name = "wav",
869 WAVDemuxContext *wav = s->priv_data;
887 wav->w64 = 1;
901 /* subtract chunk header size - normal wav file doesn't count it */
916 wav->data_end = avio_tell(pb) + size - 24;
976 set_spdif(s, wav);