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

Function iv_alloc_frames

libavcodec/indeo3.c:97–141  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

95}
96
97static av_cold int iv_alloc_frames(Indeo3DecodeContext *s)
98{
99 int luma_width = (s->width + 3) & ~3,
100 luma_height = (s->height + 3) & ~3,
101 chroma_width = ((luma_width >> 2) + 3) & ~3,
102 chroma_height = ((luma_height >> 2) + 3) & ~3,
103 luma_pixels = luma_width * luma_height,
104 chroma_pixels = chroma_width * chroma_height,
105 i;
106 unsigned int bufsize = luma_pixels * 2 + luma_width * 3 +
107 (chroma_pixels + chroma_width) * 4;
108
109 av_freep(&s->buf);
110 if(!(s->buf = av_malloc(bufsize)))
111 return AVERROR(ENOMEM);
112 s->iv_frame[0].y_w = s->iv_frame[1].y_w = luma_width;
113 s->iv_frame[0].y_h = s->iv_frame[1].y_h = luma_height;
114 s->iv_frame[0].uv_w = s->iv_frame[1].uv_w = chroma_width;
115 s->iv_frame[0].uv_h = s->iv_frame[1].uv_h = chroma_height;
116
117 s->iv_frame[0].Ybuf = s->buf + luma_width;
118 i = luma_pixels + luma_width * 2;
119 s->iv_frame[1].Ybuf = s->buf + i;
120 i += (luma_pixels + luma_width);
121 s->iv_frame[0].Ubuf = s->buf + i;
122 i += (chroma_pixels + chroma_width);
123 s->iv_frame[1].Ubuf = s->buf + i;
124 i += (chroma_pixels + chroma_width);
125 s->iv_frame[0].Vbuf = s->buf + i;
126 i += (chroma_pixels + chroma_width);
127 s->iv_frame[1].Vbuf = s->buf + i;
128
129 for(i = 1; i <= luma_width; i++)
130 s->iv_frame[0].Ybuf[-i] = s->iv_frame[1].Ybuf[-i] =
131 s->iv_frame[0].Ubuf[-i] = 0x80;
132
133 for(i = 1; i <= chroma_width; i++) {
134 s->iv_frame[1].Ubuf[-i] = 0x80;
135 s->iv_frame[0].Vbuf[-i] = 0x80;
136 s->iv_frame[1].Vbuf[-i] = 0x80;
137 s->iv_frame[1].Vbuf[chroma_pixels+i-1] = 0x80;
138 }
139
140 return 0;
141}
142
143static av_cold void iv_free_func(Indeo3DecodeContext *s)
144{

Callers 2

indeo3_decode_initFunction · 0.85
iv_decode_frameFunction · 0.85

Calls 2

av_freepFunction · 0.85
av_mallocFunction · 0.85

Tested by

no test coverage detected