comparison vorbis_enc.c @ 3839:c5ec6d7710ba libavcodec

Original Commit: r36 | ods15 | 2006-09-23 08:43:09 +0300 (Sat, 23 Sep 2006) | 2 lines starting point for packet encode, writing floor
author ods15
date Mon, 02 Oct 2006 05:56:18 +0000
parents 6ccaab22c4d6
children bb414feb6a0d
comparison
equal deleted inserted replaced
3838:6ccaab22c4d6 3839:c5ec6d7710ba
587 } 587 }
588 588
589 589
590 static int vorbis_encode_frame(AVCodecContext * avccontext, unsigned char * packets, int buf_size, void *data) 590 static int vorbis_encode_frame(AVCodecContext * avccontext, unsigned char * packets, int buf_size, void *data)
591 { 591 {
592 #if 0
593 venc_context_t * venc = avccontext->priv_data; 592 venc_context_t * venc = avccontext->priv_data;
594 signed short * audio = data; 593 signed short * audio = data;
595 int samples = data ? avccontext->frame_size : 0; 594 int samples = data ? avccontext->frame_size : 0;
596 595 vorbis_mode_t * mode;
597 avccontext->coded_frame->pts = av_rescale_q(op2->granulepos, (AVRational){1, avccontext->sample_rate}, avccontext->time_base); 596 mapping_t * mapping;
598 memcpy(packets, compressed_frame, l); 597 PutBitContext pb;
599 #endif 598 int i;
599
600 init_put_bits(&pb, packets, buf_size);
601
602 put_bits(&pb, 1, 0); // magic bit
603
604 put_bits(&pb, ilog(venc->nmodes - 1), 0); // 0 bits, the mode
605
606 mode = &venc->modes[0];
607 mapping = &venc->mappings[mode->mapping];
608 if (mode->blockflag) {
609 put_bits(&pb, 1, 0);
610 put_bits(&pb, 1, 0);
611 }
612
613 for (i = 0; i < venc->channels; i++) {
614 floor_t * fc = &venc->floors[mapping->floor[mapping->mux[i]]];
615 int range = 255 / fc->multiplier + 1;
616 int j;
617 put_bits(&pb, 1, 1); // non zero
618 put_bits(&pb, ilog(range - 1), 113); // magic value - 3.7180282E-05
619 put_bits(&pb, ilog(range - 1), 113); // both sides of X
620 for (j = 0; j < fc->partitions; j++) {
621 floor_class_t * c = &fc->classes[fc->partition_to_class[j]];
622 codebook_t * book = &venc->codebooks[c->books[0]];
623 int entry = 0;
624 int k;
625 for (k = 0; k < c->dim; k++) {
626 put_bits(&pb, book->entries[entry].len, book->entries[entry].codeword);
627 }
628 }
629 }
630
600 return data ? 50 : 0; 631 return data ? 50 : 0;
601 } 632 }
602 633
603 634
604 static int vorbis_encode_close(AVCodecContext * avccontext) 635 static int vorbis_encode_close(AVCodecContext * avccontext)