Lines Matching defs:mp3

145     MP3Context       *mp3 = s->priv_data;
146 AVCodecParameters *par = s->streams[mp3->audio_stream_idx]->codecpar;
147 AVDictionaryEntry *enc = av_dict_get(s->streams[mp3->audio_stream_idx]->metadata, "encoder", NULL, 0);
159 if (!(s->pb->seekable & AVIO_SEEKABLE_NORMAL) || !mp3->write_xing)
211 mp3->xing_offset = xing_offtbl[mpah.lsf == 1][mpah.nb_channels == 1] + 4;
212 bytes_needed = mp3->xing_offset + XING_SIZE;
226 ffio_fill(dyn_ctx, 0, mp3->xing_offset - 4);
230 mp3->size = mpah.frame_size;
231 mp3->want=1;
232 mp3->seen=0;
233 mp3->pos=0;
277 mp3->xing_frame_size = avio_close_dyn_buf(dyn_ctx, &mp3->xing_frame);
278 mp3->xing_frame_offset = avio_tell(s->pb);
279 avio_write(s->pb, mp3->xing_frame, mp3->xing_frame_size);
281 mp3->audio_size = mp3->xing_frame_size;
290 static void mp3_xing_add_frame(MP3Context *mp3, AVPacket *pkt)
294 mp3->frames++;
295 mp3->seen++;
296 mp3->size += pkt->size;
298 if (mp3->want == mp3->seen) {
299 mp3->bag[mp3->pos] = mp3->size;
301 if (XING_NUM_BAGS == ++mp3->pos) {
304 mp3->bag[i >> 1] = mp3->bag[i];
307 mp3->want *= 2;
309 mp3->pos = XING_NUM_BAGS / 2;
312 mp3->seen = 0;
318 MP3Context *mp3 = s->priv_data;
329 if (!mp3->initial_bitrate)
330 mp3->initial_bitrate = mpah.bit_rate;
331 if ((mpah.bit_rate == 0) || (mp3->initial_bitrate != mpah.bit_rate))
332 mp3->has_variable_bitrate = 1;
356 if (mp3->xing_offset) {
360 mp3_xing_add_frame(mp3, pkt);
361 mp3->audio_size += pkt->size;
362 mp3->audio_crc = av_crc(av_crc_get_table(AV_CRC_16_ANSI_LE),
363 mp3->audio_crc, pkt->data, pkt->size);
369 mp3->padding = FFMAX(AV_RL32(side_data + 4) + 528 + 1, 0);
370 if (!mp3->delay)
371 mp3->delay = FFMAX(AV_RL32(side_data) - 528 - 1, 0);
373 mp3->padding = 0;
383 MP3Context *mp3 = s->priv_data;
387 ff_id3v2_finish(&mp3->id3, s->pb, s->metadata_header_padding);
390 while (mp3->queue.head) {
391 avpriv_packet_list_get(&mp3->queue, pkt);
401 MP3Context *mp3 = s->priv_data;
410 if (!mp3->has_variable_bitrate)
411 AV_WL32(mp3->xing_frame + mp3->xing_offset, MKTAG('I', 'n', 'f', 'o'));
413 AV_WB32(mp3->xing_frame + mp3->xing_offset + 8, mp3->frames);
414 AV_WB32(mp3->xing_frame + mp3->xing_offset + 12, mp3->size);
416 toc = mp3->xing_frame + mp3->xing_offset + 16;
419 int j = i * mp3->pos / XING_TOC_SIZE;
420 int seek_point = 256LL * mp3->bag[j] / mp3->size;
430 AV_WB32(mp3->xing_frame + mp3->xing_offset + 131,
437 AV_WB16(mp3->xing_frame + mp3->xing_offset + 135, val);
444 AV_WB16(mp3->xing_frame + mp3->xing_offset + 137, val);
449 if (mp3->delay >= 1 << 12) {
450 mp3->delay = (1 << 12) - 1;
453 if (mp3->padding >= 1 << 12) {
454 mp3->padding = (1 << 12) - 1;
457 AV_WB24(mp3->xing_frame + mp3->xing_offset + 141, (mp3->delay << 12) + mp3->padding);
459 AV_WB32(mp3->xing_frame + mp3->xing_offset + XING_SIZE - 8, mp3->audio_size);
460 AV_WB16(mp3->xing_frame + mp3->xing_offset + XING_SIZE - 4, mp3->audio_crc);
462 tag_crc = av_crc(av_crc_get_table(AV_CRC_16_ANSI_LE), 0, mp3->xing_frame, 190);
463 AV_WB16(mp3->xing_frame + mp3->xing_offset + XING_SIZE - 2, tag_crc);
465 avio_seek(s->pb, mp3->xing_frame_offset, SEEK_SET);
466 avio_write(s->pb, mp3->xing_frame, mp3->xing_frame_size);
473 MP3Context *mp3 = s->priv_data;
475 if (mp3->pics_to_write) {
482 if (mp3->write_id3v1 && id3v1_create_tag(s, buf) > 0) {
486 if (mp3->xing_offset)
522 MP3Context *mp3 = s->priv_data;
524 if (pkt->stream_index == mp3->audio_stream_idx) {
525 if (mp3->pics_to_write) {
527 int ret = avpriv_packet_list_put(&mp3->queue, pkt, NULL, 0);
531 mp3->pics_to_write = 0;
545 if (!mp3->pics_to_write || s->streams[pkt->stream_index]->nb_frames >= 1)
548 if ((ret = ff_id3v2_write_apic(s, &mp3->id3, pkt)) < 0)
550 mp3->pics_to_write--;
553 if (!mp3->pics_to_write &&
567 MP3Context *mp3 = s->priv_data;
570 if (mp3->id3v2_version &&
571 mp3->id3v2_version != 3 &&
572 mp3->id3v2_version != 4) {
574 "3, 4 or 0 (disabled) are allowed.\n", mp3->id3v2_version);
580 mp3->audio_stream_idx = -1;
584 if (mp3->audio_stream_idx >= 0 || st->codecpar->codec_id != AV_CODEC_ID_MP3) {
589 mp3->audio_stream_idx = i;
595 if (mp3->audio_stream_idx < 0) {
599 mp3->pics_to_write = s->nb_streams - 1;
601 if (mp3->pics_to_write && !mp3->id3v2_version) {
612 MP3Context *mp3 = s->priv_data;
615 if (mp3->id3v2_version) {
616 ff_id3v2_start(&mp3->id3, s->pb, mp3->id3v2_version, ID3v2_DEFAULT_MAGIC);
617 ret = ff_id3v2_write_metadata(s, &mp3->id3);
622 if (!mp3->pics_to_write) {
623 if (mp3->id3v2_version)
624 ff_id3v2_finish(&mp3->id3, s->pb, s->metadata_header_padding);
633 MP3Context *mp3 = s->priv_data;
635 avpriv_packet_list_free(&mp3->queue);
636 av_freep(&mp3->xing_frame);
640 .name = "mp3",
643 .extensions = "mp3",