Mercurial > libavcodec.hg
comparison utils.c @ 2756:d8874c8749ec libavcodec
subtitle codec type support
author | bellard |
---|---|
date | Fri, 03 Jun 2005 13:59:38 +0000 |
parents | 32336384162e |
children | 2b37bcabe608 |
comparison
equal
deleted
inserted
replaced
2755:975074f04b95 | 2756:d8874c8749ec |
---|---|
588 return ret; | 588 return ret; |
589 }else | 589 }else |
590 return 0; | 590 return 0; |
591 } | 591 } |
592 | 592 |
593 int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size, | |
594 const AVSubtitle *sub) | |
595 { | |
596 int ret; | |
597 ret = avctx->codec->encode(avctx, buf, buf_size, (void *)sub); | |
598 avctx->frame_number++; | |
599 return ret; | |
600 } | |
601 | |
593 /** | 602 /** |
594 * decode a frame. | 603 * decode a frame. |
595 * @param buf bitstream buffer, must be FF_INPUT_BUFFER_PADDING_SIZE larger then the actual read bytes | 604 * @param buf bitstream buffer, must be FF_INPUT_BUFFER_PADDING_SIZE larger then the actual read bytes |
596 * because some optimized bitstream readers read 32 or 64 bit at once and could read over the end | 605 * because some optimized bitstream readers read 32 or 64 bit at once and could read over the end |
597 * @param buf_size the size of the buffer in bytes | 606 * @param buf_size the size of the buffer in bytes |
634 | 643 |
635 *frame_size_ptr= 0; | 644 *frame_size_ptr= 0; |
636 ret = avctx->codec->decode(avctx, samples, frame_size_ptr, | 645 ret = avctx->codec->decode(avctx, samples, frame_size_ptr, |
637 buf, buf_size); | 646 buf, buf_size); |
638 avctx->frame_number++; | 647 avctx->frame_number++; |
648 return ret; | |
649 } | |
650 | |
651 /* decode a subtitle message. return -1 if error, otherwise return the | |
652 *number of bytes used. If no subtitle could be decompressed, | |
653 *got_sub_ptr is zero. Otherwise, the subtitle is stored in *sub. */ | |
654 int avcodec_decode_subtitle(AVCodecContext *avctx, AVSubtitle *sub, | |
655 int *got_sub_ptr, | |
656 const uint8_t *buf, int buf_size) | |
657 { | |
658 int ret; | |
659 | |
660 *got_sub_ptr = 0; | |
661 ret = avctx->codec->decode(avctx, sub, got_sub_ptr, | |
662 (uint8_t *)buf, buf_size); | |
663 if (*got_sub_ptr) | |
664 avctx->frame_number++; | |
639 return ret; | 665 return ret; |
640 } | 666 } |
641 | 667 |
642 int avcodec_close(AVCodecContext *avctx) | 668 int avcodec_close(AVCodecContext *avctx) |
643 { | 669 { |
806 break; | 832 break; |
807 case CODEC_TYPE_DATA: | 833 case CODEC_TYPE_DATA: |
808 snprintf(buf, buf_size, "Data: %s", codec_name); | 834 snprintf(buf, buf_size, "Data: %s", codec_name); |
809 bitrate = enc->bit_rate; | 835 bitrate = enc->bit_rate; |
810 break; | 836 break; |
837 case CODEC_TYPE_SUBTITLE: | |
838 snprintf(buf, buf_size, "Subtitle: %s", codec_name); | |
839 bitrate = enc->bit_rate; | |
840 break; | |
811 default: | 841 default: |
812 snprintf(buf, buf_size, "Invalid Codec type %d", enc->codec_type); | 842 snprintf(buf, buf_size, "Invalid Codec type %d", enc->codec_type); |
813 return; | 843 return; |
814 } | 844 } |
815 if (encode) { | 845 if (encode) { |