Advertisement
Guest User

Untitled

a guest
Aug 31st, 2015
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. typedef struct zimg_image_buffer_const {
  2. unsigned version;
  3. const void *data[3];
  4. ptrdiff_t stride[3];
  5. unsigned mask[3];
  6. } zimg_image_buffer_const;
  7.  
  8. typedef union zimg_image_buffer {
  9. struct {
  10. unsigned version;
  11. void *data[3];
  12. ptrdiff_t stride[3];
  13. unsigned mask[3];
  14. } m;
  15.  
  16. zimg_image_buffer_const c;
  17. } zimg_image_buffer;
  18.  
  19. typedef struct zimg_graph zimg_graph;
  20.  
  21.  
  22. // Minimum buffering mask required for input.
  23. unsigned zimg_graph_input_mask(const zimg_graph *graph);
  24.  
  25. // Minimum buffering mask required for output.
  26. unsigned zimg_graph_output_mask(const zimg_graph *graph);
  27.  
  28. // Other temporary data.
  29. size_t zimg_graph_tmp_size(const zimg_graph *graph);
  30.  
  31.  
  32. // Make line i available to the input buffer.
  33. typedef int (*zimg_unpack_func)(void *user, unsigned i);
  34.  
  35. // Notify that line i is available in the output buffer.
  36. typedef int (*zimg_pack_func)(void *user, unsigned i);
  37.  
  38. typedef struct zimg_unpack_yuy2_context {
  39. unsigned version;
  40. zimg_image_buffer *buf; // same as argument to graph_traverse
  41. const void *packed_plane;
  42. ptrdiff_t packed_stride;
  43. } zimg_unpack_yuy2_context;
  44.  
  45. typedef struct zimg_pack_yuy2_context {
  46. unsigned version;
  47. zimg_image_buffer_const *buf; // same as argument to graph_traverse
  48. void *packed_plane;
  49. ptrdiff_t packed_stride;
  50. } zimg_pack_yuy2_context;
  51.  
  52.  
  53. typedef struct zimg_unpack_rgb32_context {
  54. unsigned version;
  55. zimg_image_buffer *buf; // same as argument to graph_traverse
  56. const void *packed_plane;
  57. ptrdiff_t packed_stride;
  58.  
  59. void *alpha_plane; // dumps alpha here
  60. ptrdiff_t alpha_stride;
  61. } zimg_unpack_rgb_context;
  62.  
  63. typedef struct zimg_pack_rgb32_context {
  64. unsigned version;
  65. zimg_image_buffer_const *buf; // same as argument to graph_traverse
  66. void *packed_plane;
  67. ptrdiff_t packed_stride;
  68.  
  69. const void *alpha_plane; // reinterleaves alpha from here (must be planar)
  70. ptrdiff_t alpha_stride;
  71. } zimg_pack_rgb_context;
  72.  
  73.  
  74. // use zimg_unpack/pack_yuy2_context
  75. int zimg_unpack_yuy2(void *user, unsigned i);
  76. int zimg_pack_yuy2(void *user, unsigned i);
  77.  
  78. // use zimg_unpack/pack_rgb_context
  79. int zimg_unpack_rgb32(void *user, unsigned i);
  80. int zimg_pack_rgb32(void *user, unsigned i);
  81. int zimg_unpack_rgb24(void *user, unsigned i);
  82. int zimg_pack_rgb24(void *user, unsigned i);
  83.  
  84. // To run on a fully allocated planar image:
  85. // zimg_graph_traverse(g, src_buf, dst, tmp, 0, 0, 0, 0);
  86. // To convert YUY2 to RGB32:
  87. // zimg_unpack_yuy2_context unpack_yuy2 = { ZIMG_API_VERSION, src_mutable, yuy2_ptr, yuy2_stride };
  88. // zimg_pack_rgb_context pack_rgb = { ZIMG_API_VERSION, dst, rgb32_ptr, rgb32_stride, 0, 0 };
  89. // zimg_graph_traverse(g, &src_mutable->c, dst, tmp, &zimg_unpack_yuy2, &unpack_yuy2, &zimg_pack_rgb32, &pack_rgb);
  90.  
  91. void zimg_graph_traverse(const zimg_graph *graph, const zimg_image_buffer_const *src, const zimg_image_buffer *dst,
  92. void *tmp, zimg_unpack_func unpack_cb, void *unpack_priv, zimg_pack_func pack_cb, void *pack_priv);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement