Lines Matching refs:picture

53 int WebPPictureHasTransparency(const WebPPicture* picture) {
54 if (picture == NULL) return 0;
55 if (!picture->use_argb) {
56 return CheckNonOpaque(picture->a, picture->width, picture->height,
57 1, picture->a_stride);
60 const uint32_t* argb = picture->argb;
62 for (y = 0; y < picture->height; ++y) {
63 for (x = 0; x < picture->width; ++x) {
66 argb += picture->argb_stride;
163 const int dst = (x) + (y) * picture->uv_stride; \
167 picture->u[dst] = RGBToU(r, g, b, &rg); \
168 picture->v[dst] = RGBToV(r, g, b, &rg); \
178 WebPPicture* const picture) {
180 const int width = picture->width;
181 const int height = picture->height;
186 picture->colorspace |= WEBP_CSP_ALPHA_BIT;
188 picture->colorspace &= WEBP_CSP_UV_MASK;
190 picture->use_argb = 0;
192 if (!WebPPictureAllocYUVA(picture, width, height)) return 0;
199 uint8_t* const dst = &picture->y[y * picture->y_stride];
226 assert(picture->a != NULL);
229 picture->a[x + y * picture->a_stride] =
246 int WebPPictureARGBToYUVADithered(WebPPicture* picture, WebPEncCSP colorspace,
248 if (picture == NULL) return 0;
249 if (picture->argb == NULL) {
250 return WebPEncodingSetError(picture, VP8_ENC_ERROR_NULL_PARAMETER);
252 const uint8_t* const argb = (const uint8_t*)picture->argb;
258 picture->colorspace = colorspace;
259 return ImportYUVAFromRGBA(r, g, b, a, 4, 4 * picture->argb_stride,
260 dithering, picture);
264 int WebPPictureARGBToYUVA(WebPPicture* picture, WebPEncCSP colorspace) {
265 return WebPPictureARGBToYUVADithered(picture, colorspace, 0.f);
271 int WebPPictureYUVAToARGB(WebPPicture* picture) {
272 if (picture == NULL) return 0;
273 if (picture->y == NULL || picture->u == NULL || picture->v == NULL) {
274 return WebPEncodingSetError(picture, VP8_ENC_ERROR_NULL_PARAMETER);
276 if ((picture->colorspace & WEBP_CSP_ALPHA_BIT) && picture->a == NULL) {
277 return WebPEncodingSetError(picture, VP8_ENC_ERROR_NULL_PARAMETER);
279 if ((picture->colorspace & WEBP_CSP_UV_MASK) != WEBP_YUV420) {
280 return WebPEncodingSetError(picture, VP8_ENC_ERROR_INVALID_CONFIGURATION);
283 if (!WebPPictureAllocARGB(picture, picture->width, picture->height)) return 0;
284 picture->use_argb = 1;
289 const int width = picture->width;
290 const int height = picture->height;
291 const int argb_stride = 4 * picture->argb_stride;
292 uint8_t* dst = (uint8_t*)picture->argb;
293 const uint8_t *cur_u = picture->u, *cur_v = picture->v, *cur_y = picture->y;
298 cur_y += picture->y_stride;
304 cur_u += picture->uv_stride;
305 cur_v += picture->uv_stride;
306 upsample(cur_y, cur_y + picture->y_stride, top_u, top_v, cur_u, cur_v,
308 cur_y += 2 * picture->y_stride;
316 if (picture->colorspace & WEBP_CSP_ALPHA_BIT) {
318 uint32_t* const argb_dst = picture->argb + y * picture->argb_stride;
319 const uint8_t* const src = picture->a + y * picture->a_stride;
333 static int Import(WebPPicture* const picture,
341 const int width = picture->width;
342 const int height = picture->height;
344 if (!picture->use_argb) {
346 0.f /* no dithering */, picture);
348 if (!WebPPictureAlloc(picture)) return 0;
352 uint32_t* const dst = &picture->argb[y * picture->argb_stride];
365 int WebPPictureImportRGB(WebPPicture* picture,
367 return (picture != NULL) ? Import(picture, rgb, rgb_stride, 3, 0, 0) : 0;
370 int WebPPictureImportBGR(WebPPicture* picture,
372 return (picture != NULL) ? Import(picture, rgb, rgb_stride, 3, 1, 0) : 0;
375 int WebPPictureImportRGBA(WebPPicture* picture,
377 return (picture != NULL) ? Import(picture, rgba, rgba_stride, 4, 0, 1) : 0;
380 int WebPPictureImportBGRA(WebPPicture* picture,
382 return (picture != NULL) ? Import(picture, rgba, rgba_stride, 4, 1, 1) : 0;
385 int WebPPictureImportRGBX(WebPPicture* picture,
387 return (picture != NULL) ? Import(picture, rgba, rgba_stride, 4, 0, 0) : 0;
390 int WebPPictureImportBGRX(WebPPicture* picture,
392 return (picture != NULL) ? Import(picture, rgba, rgba_stride, 4, 1, 0) : 0;