static int get_ck_hd(char *ckID, unsigned long *ckSize, char *end_pref, int *num_read, FILE *file) { return (get_fourcc(ckID, end_pref, num_read, file) && get_lsbf_ulong(ckSize, end_pref, num_read, file)); }
static int get_back_bo(struct dri2_egl_surface *dri2_surf) { struct dri2_egl_display *dri2_dpy = dri2_egl_display(dri2_surf->base.Resource.Display); int fourcc, pitch; int offset = 0, fd; if (dri2_surf->dri_image) return 0; if (!dri2_surf->buffer) return -1; fd = get_native_buffer_fd(dri2_surf->buffer); if (fd < 0) { _eglLog(_EGL_WARNING, "Could not get native buffer FD"); return -1; } fourcc = get_fourcc(dri2_surf->buffer->format); pitch = dri2_surf->buffer->stride * get_format_bpp(dri2_surf->buffer->format); if (fourcc == -1 || pitch == 0) { _eglLog(_EGL_WARNING, "Invalid buffer fourcc(%x) or pitch(%d)", fourcc, pitch); return -1; } dri2_surf->dri_image = dri2_dpy->image->createImageFromFds(dri2_dpy->dri_screen, dri2_surf->base.Width, dri2_surf->base.Height, fourcc, &fd, 1, &pitch, &offset, dri2_surf); if (!dri2_surf->dri_image) return -1; return 0; }
static int get_back_bo(struct dri2_egl_surface *dri2_surf) { struct dri2_egl_display *dri2_dpy = dri2_egl_display(dri2_surf->base.Resource.Display); int fourcc, pitch; int offset = 0, fd; if (!dri2_surf->buffer) return -1; fd = get_native_buffer_fd(dri2_surf->buffer); if (fd < 0) return -1; fourcc = get_fourcc(get_format(dri2_surf->buffer->format)); pitch = dri2_surf->buffer->stride * get_format_bpp(dri2_surf->buffer->format); if (fourcc == -1 || pitch == 0) return -1; dri2_surf->dri_image = dri2_dpy->image->createImageFromFds(dri2_dpy->dri_screen, dri2_surf->base.Width, dri2_surf->base.Height, fourcc, &fd, 1, &pitch, &offset, dri2_surf); if (!dri2_surf->dri_image) return -1; return 0; }
void output_summary(struct video_export *s) { char name[512]; snprintf(name, 512, "%s/video.info", s->path); FILE *summary = fopen(name, "w"); if(!summary) { perror("Cannot write video export summary file"); return; } fprintf(summary, "version %d\n", VIDEO_EXPORT_SUMMARY_VERSION); fprintf(summary, "width %d\n", s->saved_desc.width); fprintf(summary, "height %d\n", s->saved_desc.height); uint32_t fourcc = get_fourcc(s->saved_desc.color_spec); fprintf(summary, "fourcc %.4s\n", (char *) &fourcc); fprintf(summary, "fps %.2f\n", s->saved_desc.fps); fprintf(summary, "interlacing %d\n", (int) s->saved_desc.interlacing); fprintf(summary, "count %d\n", s->total); fclose(summary); }
static _EGLImage * dri2_create_image_android_native_buffer(_EGLDisplay *disp, _EGLContext *ctx, struct ANativeWindowBuffer *buf) { struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); struct dri2_egl_image *dri2_img; int name, fd; int format; if (ctx != NULL) { /* From the EGL_ANDROID_image_native_buffer spec: * * * If <target> is EGL_NATIVE_BUFFER_ANDROID and <ctx> is not * EGL_NO_CONTEXT, the error EGL_BAD_CONTEXT is generated. */ _eglError(EGL_BAD_CONTEXT, "eglCreateEGLImageKHR: for " "EGL_NATIVE_BUFFER_ANDROID, the context must be " "EGL_NO_CONTEXT"); return NULL; } if (!buf || buf->common.magic != ANDROID_NATIVE_BUFFER_MAGIC || buf->common.version != sizeof(*buf)) { _eglError(EGL_BAD_PARAMETER, "eglCreateEGLImageKHR"); return NULL; } fd = get_native_buffer_fd(buf); if (fd >= 0) { const int fourcc = get_fourcc(get_format(buf->format)); const int pitch = buf->stride * get_format_bpp(buf->format); const EGLint attr_list[14] = { EGL_WIDTH, buf->width, EGL_HEIGHT, buf->height, EGL_LINUX_DRM_FOURCC_EXT, fourcc, EGL_DMA_BUF_PLANE0_FD_EXT, fd, EGL_DMA_BUF_PLANE0_PITCH_EXT, pitch, EGL_DMA_BUF_PLANE0_OFFSET_EXT, 0, EGL_NONE, 0 }; if (fourcc == -1 || pitch == 0) return NULL; return dri2_create_image_dma_buf(disp, ctx, NULL, attr_list); } name = get_native_buffer_name(buf); if (!name) { _eglError(EGL_BAD_PARAMETER, "eglCreateEGLImageKHR"); return NULL; } format = get_format(buf->format); if (format == -1) return NULL; dri2_img = calloc(1, sizeof(*dri2_img)); if (!dri2_img) { _eglError(EGL_BAD_ALLOC, "droid_create_image_mesa_drm"); return NULL; } if (!_eglInitImage(&dri2_img->base, disp)) { free(dri2_img); return NULL; } dri2_img->dri_image = dri2_dpy->image->createImageFromName(dri2_dpy->dri_screen, buf->width, buf->height, format, name, buf->stride, dri2_img); if (!dri2_img->dri_image) { free(dri2_img); _eglError(EGL_BAD_ALLOC, "droid_create_image_mesa_drm"); return NULL; } return &dri2_img->base; }