Mercurial > libavcodec.hg
comparison mpegvideo.c @ 1042:a78f6f72d54e libavcodec
--disable-risky support
author | michaelni |
---|---|
date | Wed, 29 Jan 2003 12:00:11 +0000 |
parents | d6ba0641cc36 |
children | 75a659fae7e0 |
comparison
equal
deleted
inserted
replaced
1041:1d906a29afb6 | 1042:a78f6f72d54e |
---|---|
623 if (mjpeg_init(s) < 0) | 623 if (mjpeg_init(s) < 0) |
624 return -1; | 624 return -1; |
625 avctx->delay=0; | 625 avctx->delay=0; |
626 s->low_delay=1; | 626 s->low_delay=1; |
627 break; | 627 break; |
628 #ifdef CONFIG_RISKY | |
628 case CODEC_ID_H263: | 629 case CODEC_ID_H263: |
629 if (h263_get_picture_format(s->width, s->height) == 7) { | 630 if (h263_get_picture_format(s->width, s->height) == 7) { |
630 printf("Input picture size isn't suitable for h263 codec! try h263+\n"); | 631 printf("Input picture size isn't suitable for h263 codec! try h263+\n"); |
631 return -1; | 632 return -1; |
632 } | 633 } |
702 s->unrestricted_mv = 1; | 703 s->unrestricted_mv = 1; |
703 s->msmpeg4_version= 5; | 704 s->msmpeg4_version= 5; |
704 avctx->delay=0; | 705 avctx->delay=0; |
705 s->low_delay=1; | 706 s->low_delay=1; |
706 break; | 707 break; |
708 #endif | |
707 default: | 709 default: |
708 return -1; | 710 return -1; |
709 } | 711 } |
710 | 712 |
711 { /* set up some save defaults, some codecs might override them later */ | 713 { /* set up some save defaults, some codecs might override them later */ |
739 return -1; | 741 return -1; |
740 | 742 |
741 ff_init_me(s); | 743 ff_init_me(s); |
742 | 744 |
743 #ifdef CONFIG_ENCODERS | 745 #ifdef CONFIG_ENCODERS |
746 #ifdef CONFIG_RISKY | |
744 if (s->out_format == FMT_H263) | 747 if (s->out_format == FMT_H263) |
745 h263_encode_init(s); | 748 h263_encode_init(s); |
746 else if (s->out_format == FMT_MPEG1) | |
747 ff_mpeg1_encode_init(s); | |
748 if(s->msmpeg4_version) | 749 if(s->msmpeg4_version) |
749 ff_msmpeg4_encode_init(s); | 750 ff_msmpeg4_encode_init(s); |
750 #endif | 751 #endif |
752 if (s->out_format == FMT_MPEG1) | |
753 ff_mpeg1_encode_init(s); | |
754 #endif | |
751 | 755 |
752 /* init default q matrix */ | 756 /* init default q matrix */ |
753 for(i=0;i<64;i++) { | 757 for(i=0;i<64;i++) { |
754 int j= s->idct_permutation[i]; | 758 int j= s->idct_permutation[i]; |
759 #ifdef CONFIG_RISKY | |
755 if(s->codec_id==CODEC_ID_MPEG4 && s->mpeg_quant){ | 760 if(s->codec_id==CODEC_ID_MPEG4 && s->mpeg_quant){ |
756 s->intra_matrix[j] = ff_mpeg4_default_intra_matrix[i]; | 761 s->intra_matrix[j] = ff_mpeg4_default_intra_matrix[i]; |
757 s->inter_matrix[j] = ff_mpeg4_default_non_intra_matrix[i]; | 762 s->inter_matrix[j] = ff_mpeg4_default_non_intra_matrix[i]; |
758 }else if(s->out_format == FMT_H263){ | 763 }else if(s->out_format == FMT_H263){ |
759 s->intra_matrix[j] = | 764 s->intra_matrix[j] = |
760 s->inter_matrix[j] = ff_mpeg1_default_non_intra_matrix[i]; | 765 s->inter_matrix[j] = ff_mpeg1_default_non_intra_matrix[i]; |
761 }else{ /* mpeg1 */ | 766 }else |
767 #endif | |
768 { /* mpeg1 */ | |
762 s->intra_matrix[j] = ff_mpeg1_default_intra_matrix[i]; | 769 s->intra_matrix[j] = ff_mpeg1_default_intra_matrix[i]; |
763 s->inter_matrix[j] = ff_mpeg1_default_non_intra_matrix[i]; | 770 s->inter_matrix[j] = ff_mpeg1_default_non_intra_matrix[i]; |
764 } | 771 } |
765 } | 772 } |
766 | 773 |
799 MPV_common_end(s); | 806 MPV_common_end(s); |
800 if (s->out_format == FMT_MJPEG) | 807 if (s->out_format == FMT_MJPEG) |
801 mjpeg_close(s); | 808 mjpeg_close(s); |
802 | 809 |
803 return 0; | 810 return 0; |
811 } | |
812 | |
813 void init_rl(RLTable *rl) | |
814 { | |
815 INT8 max_level[MAX_RUN+1], max_run[MAX_LEVEL+1]; | |
816 UINT8 index_run[MAX_RUN+1]; | |
817 int last, run, level, start, end, i; | |
818 | |
819 /* compute max_level[], max_run[] and index_run[] */ | |
820 for(last=0;last<2;last++) { | |
821 if (last == 0) { | |
822 start = 0; | |
823 end = rl->last; | |
824 } else { | |
825 start = rl->last; | |
826 end = rl->n; | |
827 } | |
828 | |
829 memset(max_level, 0, MAX_RUN + 1); | |
830 memset(max_run, 0, MAX_LEVEL + 1); | |
831 memset(index_run, rl->n, MAX_RUN + 1); | |
832 for(i=start;i<end;i++) { | |
833 run = rl->table_run[i]; | |
834 level = rl->table_level[i]; | |
835 if (index_run[run] == rl->n) | |
836 index_run[run] = i; | |
837 if (level > max_level[run]) | |
838 max_level[run] = level; | |
839 if (run > max_run[level]) | |
840 max_run[level] = run; | |
841 } | |
842 rl->max_level[last] = av_malloc(MAX_RUN + 1); | |
843 memcpy(rl->max_level[last], max_level, MAX_RUN + 1); | |
844 rl->max_run[last] = av_malloc(MAX_LEVEL + 1); | |
845 memcpy(rl->max_run[last], max_run, MAX_LEVEL + 1); | |
846 rl->index_run[last] = av_malloc(MAX_RUN + 1); | |
847 memcpy(rl->index_run[last], index_run, MAX_RUN + 1); | |
848 } | |
804 } | 849 } |
805 | 850 |
806 /* draw the edges of width 'w' of an image of size width, height */ | 851 /* draw the edges of width 'w' of an image of size width, height */ |
807 //FIXME check that this is ok for mpeg4 interlaced | 852 //FIXME check that this is ok for mpeg4 interlaced |
808 static void draw_edges_c(UINT8 *buf, int wrap, int width, int height, int w) | 853 static void draw_edges_c(UINT8 *buf, int wrap, int width, int height, int w) |
1697 mb_x = s->mb_x; | 1742 mb_x = s->mb_x; |
1698 mb_y = s->mb_y; | 1743 mb_y = s->mb_y; |
1699 | 1744 |
1700 switch(s->mv_type) { | 1745 switch(s->mv_type) { |
1701 case MV_TYPE_16X16: | 1746 case MV_TYPE_16X16: |
1747 #ifdef CONFIG_RISKY | |
1702 if(s->mcsel){ | 1748 if(s->mcsel){ |
1703 if(s->real_sprite_warping_points==1){ | 1749 if(s->real_sprite_warping_points==1){ |
1704 gmc1_motion(s, dest_y, dest_cb, dest_cr, 0, | 1750 gmc1_motion(s, dest_y, dest_cb, dest_cr, 0, |
1705 ref_picture, 0); | 1751 ref_picture, 0); |
1706 }else{ | 1752 }else{ |
1714 s->mv[dir][0][0], s->mv[dir][0][1], 16); | 1760 s->mv[dir][0][0], s->mv[dir][0][1], 16); |
1715 }else if(s->mspel){ | 1761 }else if(s->mspel){ |
1716 ff_mspel_motion(s, dest_y, dest_cb, dest_cr, | 1762 ff_mspel_motion(s, dest_y, dest_cb, dest_cr, |
1717 ref_picture, pix_op, | 1763 ref_picture, pix_op, |
1718 s->mv[dir][0][0], s->mv[dir][0][1], 16); | 1764 s->mv[dir][0][0], s->mv[dir][0][1], 16); |
1719 }else{ | 1765 }else |
1766 #endif | |
1767 { | |
1720 mpeg_motion(s, dest_y, dest_cb, dest_cr, 0, | 1768 mpeg_motion(s, dest_y, dest_cb, dest_cr, 0, |
1721 ref_picture, 0, | 1769 ref_picture, 0, |
1722 0, pix_op, | 1770 0, pix_op, |
1723 s->mv[dir][0][0], s->mv[dir][0][1], 16); | 1771 s->mv[dir][0][0], s->mv[dir][0][1], 16); |
1724 } | 1772 } |
2100 | 2148 |
2101 if(!(s->flags&CODEC_FLAG_GRAY)){ | 2149 if(!(s->flags&CODEC_FLAG_GRAY)){ |
2102 add_dct(s, block[4], 4, dest_cb, s->uvlinesize); | 2150 add_dct(s, block[4], 4, dest_cb, s->uvlinesize); |
2103 add_dct(s, block[5], 5, dest_cr, s->uvlinesize); | 2151 add_dct(s, block[5], 5, dest_cr, s->uvlinesize); |
2104 } | 2152 } |
2105 } else{ | 2153 } |
2154 #ifdef CONFIG_RISKY | |
2155 else{ | |
2106 ff_wmv2_add_mb(s, block, dest_y, dest_cb, dest_cr); | 2156 ff_wmv2_add_mb(s, block, dest_y, dest_cb, dest_cr); |
2107 } | 2157 } |
2158 #endif | |
2108 } else { | 2159 } else { |
2109 /* dct only in intra block */ | 2160 /* dct only in intra block */ |
2110 if(s->encoding || !(s->mpeg2 || s->codec_id==CODEC_ID_MPEG1VIDEO)){ | 2161 if(s->encoding || !(s->mpeg2 || s->codec_id==CODEC_ID_MPEG1VIDEO)){ |
2111 put_dct(s, block[0], 0, dest_y, dct_linesize); | 2162 put_dct(s, block[0], 0, dest_y, dct_linesize); |
2112 put_dct(s, block[1], 1, dest_y + 8, dct_linesize); | 2163 put_dct(s, block[1], 1, dest_y + 8, dct_linesize); |
2605 #ifdef CONFIG_ENCODERS | 2656 #ifdef CONFIG_ENCODERS |
2606 /* huffman encode */ | 2657 /* huffman encode */ |
2607 switch(s->codec_id){ //FIXME funct ptr could be slightly faster | 2658 switch(s->codec_id){ //FIXME funct ptr could be slightly faster |
2608 case CODEC_ID_MPEG1VIDEO: | 2659 case CODEC_ID_MPEG1VIDEO: |
2609 mpeg1_encode_mb(s, s->block, motion_x, motion_y); break; | 2660 mpeg1_encode_mb(s, s->block, motion_x, motion_y); break; |
2661 #ifdef CONFIG_RISKY | |
2610 case CODEC_ID_MPEG4: | 2662 case CODEC_ID_MPEG4: |
2611 mpeg4_encode_mb(s, s->block, motion_x, motion_y); break; | 2663 mpeg4_encode_mb(s, s->block, motion_x, motion_y); break; |
2612 case CODEC_ID_MSMPEG4V2: | 2664 case CODEC_ID_MSMPEG4V2: |
2613 case CODEC_ID_MSMPEG4V3: | 2665 case CODEC_ID_MSMPEG4V3: |
2614 case CODEC_ID_WMV1: | 2666 case CODEC_ID_WMV1: |
2615 msmpeg4_encode_mb(s, s->block, motion_x, motion_y); break; | 2667 msmpeg4_encode_mb(s, s->block, motion_x, motion_y); break; |
2616 case CODEC_ID_WMV2: | 2668 case CODEC_ID_WMV2: |
2617 ff_wmv2_encode_mb(s, s->block, motion_x, motion_y); break; | 2669 ff_wmv2_encode_mb(s, s->block, motion_x, motion_y); break; |
2618 case CODEC_ID_MJPEG: | |
2619 mjpeg_encode_mb(s, s->block); break; | |
2620 case CODEC_ID_H263: | 2670 case CODEC_ID_H263: |
2621 case CODEC_ID_H263P: | 2671 case CODEC_ID_H263P: |
2622 case CODEC_ID_RV10: | 2672 case CODEC_ID_RV10: |
2623 h263_encode_mb(s, s->block, motion_x, motion_y); break; | 2673 h263_encode_mb(s, s->block, motion_x, motion_y); break; |
2674 #endif | |
2675 case CODEC_ID_MJPEG: | |
2676 mjpeg_encode_mb(s, s->block); break; | |
2624 default: | 2677 default: |
2625 assert(0); | 2678 assert(0); |
2626 } | 2679 } |
2627 #endif | 2680 #endif |
2628 } | 2681 } |
2810 | 2863 |
2811 /* Reset the average MB variance */ | 2864 /* Reset the average MB variance */ |
2812 s->current_picture.mb_var_sum = 0; | 2865 s->current_picture.mb_var_sum = 0; |
2813 s->current_picture.mc_mb_var_sum = 0; | 2866 s->current_picture.mc_mb_var_sum = 0; |
2814 | 2867 |
2868 #ifdef CONFIG_RISKY | |
2815 /* we need to initialize some time vars before we can encode b-frames */ | 2869 /* we need to initialize some time vars before we can encode b-frames */ |
2816 if (s->h263_pred && !s->h263_msmpeg4) | 2870 if (s->h263_pred && !s->h263_msmpeg4) |
2817 ff_set_mpeg4_time(s, s->picture_number); | 2871 ff_set_mpeg4_time(s, s->picture_number); |
2818 | 2872 #endif |
2873 | |
2819 s->scene_change_score=0; | 2874 s->scene_change_score=0; |
2820 | 2875 |
2821 s->qscale= (int)(s->frame_qscale + 0.5); //FIXME qscale / ... stuff for ME ratedistoration | 2876 s->qscale= (int)(s->frame_qscale + 0.5); //FIXME qscale / ... stuff for ME ratedistoration |
2822 | 2877 |
2823 if(s->msmpeg4_version){ | 2878 if(s->msmpeg4_version){ |
2922 s->frame_qscale = s->current_picture.quality; | 2977 s->frame_qscale = s->current_picture.quality; |
2923 else | 2978 else |
2924 s->frame_qscale = ff_rate_estimate_qscale(s); | 2979 s->frame_qscale = ff_rate_estimate_qscale(s); |
2925 | 2980 |
2926 if(s->adaptive_quant){ | 2981 if(s->adaptive_quant){ |
2982 #ifdef CONFIG_RISKY | |
2927 switch(s->codec_id){ | 2983 switch(s->codec_id){ |
2928 case CODEC_ID_MPEG4: | 2984 case CODEC_ID_MPEG4: |
2929 ff_clean_mpeg4_qscales(s); | 2985 ff_clean_mpeg4_qscales(s); |
2930 break; | 2986 break; |
2931 case CODEC_ID_H263: | 2987 case CODEC_ID_H263: |
2932 case CODEC_ID_H263P: | 2988 case CODEC_ID_H263P: |
2933 ff_clean_h263_qscales(s); | 2989 ff_clean_h263_qscales(s); |
2934 break; | 2990 break; |
2935 } | 2991 } |
2992 #endif | |
2936 | 2993 |
2937 s->qscale= s->current_picture.qscale_table[0]; | 2994 s->qscale= s->current_picture.qscale_table[0]; |
2938 }else | 2995 }else |
2939 s->qscale= (int)(s->frame_qscale + 0.5); | 2996 s->qscale= (int)(s->frame_qscale + 0.5); |
2940 | 2997 |
2960 s->last_bits= get_bit_count(&s->pb); | 3017 s->last_bits= get_bit_count(&s->pb); |
2961 switch(s->out_format) { | 3018 switch(s->out_format) { |
2962 case FMT_MJPEG: | 3019 case FMT_MJPEG: |
2963 mjpeg_picture_header(s); | 3020 mjpeg_picture_header(s); |
2964 break; | 3021 break; |
3022 #ifdef CONFIG_RISKY | |
2965 case FMT_H263: | 3023 case FMT_H263: |
2966 if (s->codec_id == CODEC_ID_WMV2) | 3024 if (s->codec_id == CODEC_ID_WMV2) |
2967 ff_wmv2_encode_picture_header(s, picture_number); | 3025 ff_wmv2_encode_picture_header(s, picture_number); |
2968 else if (s->h263_msmpeg4) | 3026 else if (s->h263_msmpeg4) |
2969 msmpeg4_encode_picture_header(s, picture_number); | 3027 msmpeg4_encode_picture_header(s, picture_number); |
2972 else if (s->h263_rv10) | 3030 else if (s->h263_rv10) |
2973 rv10_encode_picture_header(s, picture_number); | 3031 rv10_encode_picture_header(s, picture_number); |
2974 else | 3032 else |
2975 h263_encode_picture_header(s, picture_number); | 3033 h263_encode_picture_header(s, picture_number); |
2976 break; | 3034 break; |
3035 #endif | |
2977 case FMT_MPEG1: | 3036 case FMT_MPEG1: |
2978 mpeg1_encode_picture_header(s, picture_number); | 3037 mpeg1_encode_picture_header(s, picture_number); |
2979 break; | 3038 break; |
2980 } | 3039 } |
2981 bits= get_bit_count(&s->pb); | 3040 bits= get_bit_count(&s->pb); |
2999 } | 3058 } |
3000 s->mb_incr = 1; | 3059 s->mb_incr = 1; |
3001 s->last_mv[0][0][0] = 0; | 3060 s->last_mv[0][0][0] = 0; |
3002 s->last_mv[0][0][1] = 0; | 3061 s->last_mv[0][0][1] = 0; |
3003 | 3062 |
3063 #ifdef CONFIG_RISKY | |
3004 if (s->codec_id==CODEC_ID_H263 || s->codec_id==CODEC_ID_H263P) | 3064 if (s->codec_id==CODEC_ID_H263 || s->codec_id==CODEC_ID_H263P) |
3005 s->gob_index = ff_h263_get_gob_height(s); | 3065 s->gob_index = ff_h263_get_gob_height(s); |
3006 | 3066 |
3007 if(s->codec_id==CODEC_ID_MPEG4 && s->partitioned_frame) | 3067 if(s->codec_id==CODEC_ID_MPEG4 && s->partitioned_frame) |
3008 ff_mpeg4_init_partitions(s); | 3068 ff_mpeg4_init_partitions(s); |
3069 #endif | |
3009 | 3070 |
3010 s->resync_mb_x=0; | 3071 s->resync_mb_x=0; |
3011 s->resync_mb_y=0; | 3072 s->resync_mb_y=0; |
3012 s->first_slice_line = 1; | 3073 s->first_slice_line = 1; |
3013 s->ptr_lastgob = s->pb.buf; | 3074 s->ptr_lastgob = s->pb.buf; |
3036 s->block_index[3]+=2; | 3097 s->block_index[3]+=2; |
3037 s->block_index[4]++; | 3098 s->block_index[4]++; |
3038 s->block_index[5]++; | 3099 s->block_index[5]++; |
3039 | 3100 |
3040 /* write gob / video packet header */ | 3101 /* write gob / video packet header */ |
3102 #ifdef CONFIG_RISKY | |
3041 if(s->rtp_mode){ | 3103 if(s->rtp_mode){ |
3042 int current_packet_size, is_gob_start; | 3104 int current_packet_size, is_gob_start; |
3043 | 3105 |
3044 current_packet_size= pbBufPtr(&s->pb) - s->ptr_lastgob; | 3106 current_packet_size= pbBufPtr(&s->pb) - s->ptr_lastgob; |
3045 is_gob_start=0; | 3107 is_gob_start=0; |
3076 s->first_slice_line=1; | 3138 s->first_slice_line=1; |
3077 s->resync_mb_x=mb_x; | 3139 s->resync_mb_x=mb_x; |
3078 s->resync_mb_y=mb_y; | 3140 s->resync_mb_y=mb_y; |
3079 } | 3141 } |
3080 } | 3142 } |
3143 #endif | |
3081 | 3144 |
3082 if( (s->resync_mb_x == s->mb_x) | 3145 if( (s->resync_mb_x == s->mb_x) |
3083 && s->resync_mb_y+1 == s->mb_y){ | 3146 && s->resync_mb_y+1 == s->mb_y){ |
3084 s->first_slice_line=0; | 3147 s->first_slice_line=0; |
3085 } | 3148 } |
3150 int mx= s->b_direct_mv_table[xy][0]; | 3213 int mx= s->b_direct_mv_table[xy][0]; |
3151 int my= s->b_direct_mv_table[xy][1]; | 3214 int my= s->b_direct_mv_table[xy][1]; |
3152 | 3215 |
3153 s->mv_dir = MV_DIR_FORWARD | MV_DIR_BACKWARD | MV_DIRECT; | 3216 s->mv_dir = MV_DIR_FORWARD | MV_DIR_BACKWARD | MV_DIRECT; |
3154 s->mb_intra= 0; | 3217 s->mb_intra= 0; |
3218 #ifdef CONFIG_RISKY | |
3155 ff_mpeg4_set_direct_mv(s, mx, my); | 3219 ff_mpeg4_set_direct_mv(s, mx, my); |
3220 #endif | |
3156 encode_mb_hq(s, &backup_s, &best_s, MB_TYPE_DIRECT, pb, pb2, tex_pb, | 3221 encode_mb_hq(s, &backup_s, &best_s, MB_TYPE_DIRECT, pb, pb2, tex_pb, |
3157 &dmin, &next_block, mx, my); | 3222 &dmin, &next_block, mx, my); |
3158 } | 3223 } |
3159 if(mb_type&MB_TYPE_INTRA){ | 3224 if(mb_type&MB_TYPE_INTRA){ |
3160 s->mv_dir = MV_DIR_FORWARD; | 3225 s->mv_dir = MV_DIR_FORWARD; |
3302 case MB_TYPE_DIRECT: | 3367 case MB_TYPE_DIRECT: |
3303 s->mv_dir = MV_DIR_FORWARD | MV_DIR_BACKWARD | MV_DIRECT; | 3368 s->mv_dir = MV_DIR_FORWARD | MV_DIR_BACKWARD | MV_DIRECT; |
3304 s->mb_intra= 0; | 3369 s->mb_intra= 0; |
3305 motion_x=s->b_direct_mv_table[xy][0]; | 3370 motion_x=s->b_direct_mv_table[xy][0]; |
3306 motion_y=s->b_direct_mv_table[xy][1]; | 3371 motion_y=s->b_direct_mv_table[xy][1]; |
3372 #ifdef CONFIG_RISKY | |
3307 ff_mpeg4_set_direct_mv(s, motion_x, motion_y); | 3373 ff_mpeg4_set_direct_mv(s, motion_x, motion_y); |
3374 #endif | |
3308 break; | 3375 break; |
3309 case MB_TYPE_BIDIR: | 3376 case MB_TYPE_BIDIR: |
3310 s->mv_dir = MV_DIR_FORWARD | MV_DIR_BACKWARD; | 3377 s->mv_dir = MV_DIR_FORWARD | MV_DIR_BACKWARD; |
3311 s->mb_intra= 0; | 3378 s->mb_intra= 0; |
3312 motion_x=0; | 3379 motion_x=0; |
3380 s->ptr_last_mb_line = pbBufPtr(&s->pb); | 3447 s->ptr_last_mb_line = pbBufPtr(&s->pb); |
3381 } | 3448 } |
3382 } | 3449 } |
3383 emms_c(); | 3450 emms_c(); |
3384 | 3451 |
3452 #ifdef CONFIG_RISKY | |
3385 if(s->codec_id==CODEC_ID_MPEG4 && s->partitioned_frame) | 3453 if(s->codec_id==CODEC_ID_MPEG4 && s->partitioned_frame) |
3386 ff_mpeg4_merge_partitions(s); | 3454 ff_mpeg4_merge_partitions(s); |
3387 | 3455 |
3388 if (s->msmpeg4_version && s->msmpeg4_version<4 && s->pict_type == I_TYPE) | 3456 if (s->msmpeg4_version && s->msmpeg4_version<4 && s->pict_type == I_TYPE) |
3389 msmpeg4_encode_ext_header(s); | 3457 msmpeg4_encode_ext_header(s); |
3390 | 3458 |
3391 if(s->codec_id==CODEC_ID_MPEG4) | 3459 if(s->codec_id==CODEC_ID_MPEG4) |
3392 ff_mpeg4_stuffing(&s->pb); | 3460 ff_mpeg4_stuffing(&s->pb); |
3461 #endif | |
3393 | 3462 |
3394 //if (s->gob_number) | 3463 //if (s->gob_number) |
3395 // fprintf(stderr,"\nNumber of GOB: %d", s->gob_number); | 3464 // fprintf(stderr,"\nNumber of GOB: %d", s->gob_number); |
3396 | 3465 |
3397 /* Send the last GOB if RTP */ | 3466 /* Send the last GOB if RTP */ |
3910 MPV_encode_init, | 3979 MPV_encode_init, |
3911 MPV_encode_picture, | 3980 MPV_encode_picture, |
3912 MPV_encode_end, | 3981 MPV_encode_end, |
3913 }; | 3982 }; |
3914 | 3983 |
3984 #ifdef CONFIG_RISKY | |
3985 | |
3915 AVCodec h263_encoder = { | 3986 AVCodec h263_encoder = { |
3916 "h263", | 3987 "h263", |
3917 CODEC_TYPE_VIDEO, | 3988 CODEC_TYPE_VIDEO, |
3918 CODEC_ID_H263, | 3989 CODEC_ID_H263, |
3919 sizeof(MpegEncContext), | 3990 sizeof(MpegEncContext), |
3940 MPV_encode_init, | 4011 MPV_encode_init, |
3941 MPV_encode_picture, | 4012 MPV_encode_picture, |
3942 MPV_encode_end, | 4013 MPV_encode_end, |
3943 }; | 4014 }; |
3944 | 4015 |
4016 AVCodec mpeg4_encoder = { | |
4017 "mpeg4", | |
4018 CODEC_TYPE_VIDEO, | |
4019 CODEC_ID_MPEG4, | |
4020 sizeof(MpegEncContext), | |
4021 MPV_encode_init, | |
4022 MPV_encode_picture, | |
4023 MPV_encode_end, | |
4024 }; | |
4025 | |
4026 AVCodec msmpeg4v1_encoder = { | |
4027 "msmpeg4v1", | |
4028 CODEC_TYPE_VIDEO, | |
4029 CODEC_ID_MSMPEG4V1, | |
4030 sizeof(MpegEncContext), | |
4031 MPV_encode_init, | |
4032 MPV_encode_picture, | |
4033 MPV_encode_end, | |
4034 }; | |
4035 | |
4036 AVCodec msmpeg4v2_encoder = { | |
4037 "msmpeg4v2", | |
4038 CODEC_TYPE_VIDEO, | |
4039 CODEC_ID_MSMPEG4V2, | |
4040 sizeof(MpegEncContext), | |
4041 MPV_encode_init, | |
4042 MPV_encode_picture, | |
4043 MPV_encode_end, | |
4044 }; | |
4045 | |
4046 AVCodec msmpeg4v3_encoder = { | |
4047 "msmpeg4", | |
4048 CODEC_TYPE_VIDEO, | |
4049 CODEC_ID_MSMPEG4V3, | |
4050 sizeof(MpegEncContext), | |
4051 MPV_encode_init, | |
4052 MPV_encode_picture, | |
4053 MPV_encode_end, | |
4054 }; | |
4055 | |
4056 AVCodec wmv1_encoder = { | |
4057 "wmv1", | |
4058 CODEC_TYPE_VIDEO, | |
4059 CODEC_ID_WMV1, | |
4060 sizeof(MpegEncContext), | |
4061 MPV_encode_init, | |
4062 MPV_encode_picture, | |
4063 MPV_encode_end, | |
4064 }; | |
4065 | |
4066 #endif | |
4067 | |
3945 AVCodec mjpeg_encoder = { | 4068 AVCodec mjpeg_encoder = { |
3946 "mjpeg", | 4069 "mjpeg", |
3947 CODEC_TYPE_VIDEO, | 4070 CODEC_TYPE_VIDEO, |
3948 CODEC_ID_MJPEG, | 4071 CODEC_ID_MJPEG, |
3949 sizeof(MpegEncContext), | 4072 sizeof(MpegEncContext), |
3950 MPV_encode_init, | 4073 MPV_encode_init, |
3951 MPV_encode_picture, | 4074 MPV_encode_picture, |
3952 MPV_encode_end, | 4075 MPV_encode_end, |
3953 }; | 4076 }; |
3954 | |
3955 AVCodec mpeg4_encoder = { | |
3956 "mpeg4", | |
3957 CODEC_TYPE_VIDEO, | |
3958 CODEC_ID_MPEG4, | |
3959 sizeof(MpegEncContext), | |
3960 MPV_encode_init, | |
3961 MPV_encode_picture, | |
3962 MPV_encode_end, | |
3963 }; | |
3964 | |
3965 AVCodec msmpeg4v1_encoder = { | |
3966 "msmpeg4v1", | |
3967 CODEC_TYPE_VIDEO, | |
3968 CODEC_ID_MSMPEG4V1, | |
3969 sizeof(MpegEncContext), | |
3970 MPV_encode_init, | |
3971 MPV_encode_picture, | |
3972 MPV_encode_end, | |
3973 }; | |
3974 | |
3975 AVCodec msmpeg4v2_encoder = { | |
3976 "msmpeg4v2", | |
3977 CODEC_TYPE_VIDEO, | |
3978 CODEC_ID_MSMPEG4V2, | |
3979 sizeof(MpegEncContext), | |
3980 MPV_encode_init, | |
3981 MPV_encode_picture, | |
3982 MPV_encode_end, | |
3983 }; | |
3984 | |
3985 AVCodec msmpeg4v3_encoder = { | |
3986 "msmpeg4", | |
3987 CODEC_TYPE_VIDEO, | |
3988 CODEC_ID_MSMPEG4V3, | |
3989 sizeof(MpegEncContext), | |
3990 MPV_encode_init, | |
3991 MPV_encode_picture, | |
3992 MPV_encode_end, | |
3993 }; | |
3994 | |
3995 AVCodec wmv1_encoder = { | |
3996 "wmv1", | |
3997 CODEC_TYPE_VIDEO, | |
3998 CODEC_ID_WMV1, | |
3999 sizeof(MpegEncContext), | |
4000 MPV_encode_init, | |
4001 MPV_encode_picture, | |
4002 MPV_encode_end, | |
4003 }; | |
4004 |