Lines Matching refs:codecpar
108 st->codecpar->ch_layout = dsf_channel_layout[channel_type];
109 if (!st->codecpar->ch_layout.nb_channels)
112 st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
114 if (!st->codecpar->ch_layout.nb_channels) {
115 st->codecpar->ch_layout.nb_channels = channels;
116 } else if (channels != st->codecpar->ch_layout.nb_channels) {
120 st->codecpar->sample_rate = avio_rl32(pb) / 8;
122 if (st->codecpar->ch_layout.nb_channels <= 0)
126 case 1: st->codecpar->codec_id = AV_CODEC_ID_DSD_LSBF_PLANAR; break;
127 case 8: st->codecpar->codec_id = AV_CODEC_ID_DSD_MSBF_PLANAR; break;
133 dsf->audio_size = avio_rl64(pb) / 8 * st->codecpar->ch_layout.nb_channels;
134 st->codecpar->block_align = avio_rl32(pb);
135 if (st->codecpar->block_align > INT_MAX / st->codecpar->ch_layout.nb_channels ||
136 st->codecpar->block_align <= 0) {
140 st->codecpar->block_align *= st->codecpar->ch_layout.nb_channels;
141 st->codecpar->bit_rate = st->codecpar->ch_layout.nb_channels * 8LL * st->codecpar->sample_rate;
142 avpriv_set_pts_info(st, 64, 1, st->codecpar->sample_rate);
163 int channels = st->codecpar->ch_layout.nb_channels;
170 int last_packet = pos == (dsf->data_end - st->codecpar->block_align);
185 for (ch = 0; ch < st->codecpar->ch_layout.nb_channels; ch++) {
186 ret = avio_read(pb, dst, packet_size / st->codecpar->ch_layout.nb_channels);
187 if (ret < packet_size / st->codecpar->ch_layout.nb_channels)
191 avio_skip(pb, skip_size / st->codecpar->ch_layout.nb_channels);
201 ret = av_get_packet(pb, pkt, FFMIN(dsf->data_end - pos, st->codecpar->block_align));
207 pkt->duration = st->codecpar->block_align / channels;