MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / msmpeg4_encode_dc

Function msmpeg4_encode_dc

libavcodec/msmpeg4.c:847–929  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

845#define DC_MAX 119
846
847static void msmpeg4_encode_dc(MpegEncContext * s, int level, int n, int *dir_ptr)
848{
849 int sign, code;
850 int pred, extquant;
851 int extrabits = 0;
852
853 if(s->msmpeg4_version==1){
854 int32_t *dc_val;
855 pred = msmpeg4v1_pred_dc(s, n, &dc_val);
856
857 /* update predictor */
858 *dc_val= level;
859 }else{
860 int16_t *dc_val;
861 pred = msmpeg4_pred_dc(s, n, &dc_val, dir_ptr);
862
863 /* update predictor */
864 if (n < 4) {
865 *dc_val = level * s->y_dc_scale;
866 } else {
867 *dc_val = level * s->c_dc_scale;
868 }
869 }
870
871 /* do the prediction */
872 level -= pred;
873
874 if(s->msmpeg4_version<=2){
875 if (n < 4) {
876 put_bits(&s->pb,
877 v2_dc_lum_table[level+256][1],
878 v2_dc_lum_table[level+256][0]);
879 }else{
880 put_bits(&s->pb,
881 v2_dc_chroma_table[level+256][1],
882 v2_dc_chroma_table[level+256][0]);
883 }
884 }else{
885 sign = 0;
886 if (level < 0) {
887 level = -level;
888 sign = 1;
889 }
890 code = level;
891 if (code > DC_MAX)
892 code = DC_MAX;
893 else if( s->msmpeg4_version>=6 ) {
894 if( s->qscale == 1 ) {
895 extquant = (level + 3) & 0x3;
896 code = ((level+3)>>2);
897 } else if( s->qscale == 2 ) {
898 extquant = (level + 1) & 0x1;
899 code = ((level+1)>>1);
900 }
901 }
902
903 if (s->dc_table_index == 0) {
904 if (n < 4) {

Callers 1

ff_msmpeg4_encode_blockFunction · 0.85

Calls 2

msmpeg4v1_pred_dcFunction · 0.85
msmpeg4_pred_dcFunction · 0.85

Tested by

no test coverage detected