Skip to content

Commit

Permalink
Add packed data API.
Browse files Browse the repository at this point in the history
  • Loading branch information
toots committed Oct 21, 2024
1 parent 4c015e8 commit d8012b7
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/image.mli
Original file line number Diff line number Diff line change
Expand Up @@ -314,6 +314,7 @@ module YUV420 : sig
val v : t -> Data.t
val uv_stride : t -> int
val data : t -> Data.t * Data.t * Data.t
val packed_data : t -> Data.t
val alpha : t -> Data.t option
val set_alpha : t -> Data.t option -> unit
val dimensions : t -> int * int
Expand Down
14 changes: 14 additions & 0 deletions src/imageYUV420.ml
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,20 @@ let create ?(blank = false) ?y_stride ?uv_stride width height =
if blank then blank_all img;
img

let packed_data img =
let y, u, v = data img in
let y_dim = Bigarray.Array1.dim y in
let u_dim = Bigarray.Array1.dim u in
let v_dim = Bigarray.Array1.dim v in
let data =
Bigarray.Array1.create Bigarray.int8_unsigned Bigarray.c_layout
(y_dim + u_dim + v_dim)
in
Bigarray.Array1.blit y (Bigarray.Array1.sub data 0 y_dim);
Bigarray.Array1.blit u (Bigarray.Array1.sub data y_dim u_dim);
Bigarray.Array1.blit v (Bigarray.Array1.sub data (y_dim + u_dim) v_dim);
data

let has_alpha img = img.alpha <> None
let remove_alpha img = img.alpha <- None

Expand Down

0 comments on commit d8012b7

Please sign in to comment.