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

Function build_modpred

libavcodec/indeo3.c:63–95  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

61static const uint8_t corrector_type_2[8] = { 9, 7, 6, 8, 5, 4, 3, 2 };
62
63static av_cold int build_modpred(Indeo3DecodeContext *s)
64{
65 int i, j;
66
67 if (!(s->ModPred = av_malloc(8 * 128)))
68 return AVERROR(ENOMEM);
69
70 for (i=0; i < 128; ++i) {
71 s->ModPred[i+0*128] = i > 126 ? 254 : 2*(i + 1 - ((i + 1) % 2));
72 s->ModPred[i+1*128] = i == 7 ? 20 :
73 i == 119 ||
74 i == 120 ? 236 : 2*(i + 2 - ((i + 1) % 3));
75 s->ModPred[i+2*128] = i > 125 ? 248 : 2*(i + 2 - ((i + 2) % 4));
76 s->ModPred[i+3*128] = 2*(i + 1 - ((i - 3) % 5));
77 s->ModPred[i+4*128] = i == 8 ? 20 : 2*(i + 1 - ((i - 3) % 6));
78 s->ModPred[i+5*128] = 2*(i + 4 - ((i + 3) % 7));
79 s->ModPred[i+6*128] = i > 123 ? 240 : 2*(i + 4 - ((i + 4) % 8));
80 s->ModPred[i+7*128] = 2*(i + 5 - ((i + 4) % 9));
81 }
82
83 if (!(s->corrector_type = av_malloc(24 * 256)))
84 return AVERROR(ENOMEM);
85
86 for (i=0; i < 24; ++i) {
87 for (j=0; j < 256; ++j) {
88 s->corrector_type[i*256+j] = j < corrector_type_0[i] ? 1 :
89 j < 248 || (i == 16 && j == 248) ? 0 :
90 corrector_type_2[j - 248];
91 }
92 }
93
94 return 0;
95}
96
97static av_cold int iv_alloc_frames(Indeo3DecodeContext *s)
98{

Callers 1

indeo3_decode_initFunction · 0.85

Calls 1

av_mallocFunction · 0.85

Tested by

no test coverage detected