/** * Copyright (C) 2013-2017 MulticoreWare, Inc * * Authors: Bhavna Hariharan <bhavna@multicorewareinc.com> * Kavitha Sampath <kavitha@multicorewareinc.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111, USA. * * This program is also available under a commercial proprietary license. * For more information, contact us at license @ x265.com. **/ #include <stdint.h> #ifndef HDR10PLUS_H #define HDR10PLUS_H /* hdr10plus_json_to_frame_cim: * Parses the json file containing the Creative Intent Metadata DTM for a frame of * video into a bytestream to be encoded into the resulting video stream. * path is the file path of the JSON file containing the DTM for the video. * frameNumber is the number of the frame to get the metadata for. * cim will get filled with the byte array containing the actual metadata. * Returns true in case of success. */ bool hdr10plus_json_to_frame_cim(const char* path, uint32_t frameNumber, uint8_t *&cim); /* hdr10plus_json_to_movie_cim: * Parses the json file containing the Creative Intent Metadata DTM for the video * into a bytestream to be encoded into the resulting video stream. * path is the file path of the JSON file containing the DTM for the video. * frameNumber is the number of the frame to get the metadata for. * cim will get filled with the byte array containing the actual metadata. * return int: number of frames in the movie, -1 if the process fails to obtain the metadata. */ int hdr10plus_json_to_movie_cim(const char* path, uint8_t **&cim); /* hdr10plus_json_to_frame_eif: * Parses the json file containing the Extended InfoFrame metadata for a frame of video * into a bytestream to be encoded into the resulting video stream. * path is the file path of the JSON file containing the Extended InfoFrame metadata for the video. * frameNumber is the number of the frame to get the metadata for. * Extended InfoFrame will get filled with the byte array containing the actual metadata. * Returns true in case of success. */ bool hdr10plus_json_to_frame_eif(const char* path, uint32_t frameNumber, uint8_t *&eif); /* hdr10plus_json_to_movie_eif: * Parses the json file containing the Extended InfoFrame metadata for the video * into a bytestream to be encoded into the resulting video stream. * path is the file path of the JSON file containing the Extended InfoFrame metadata for the video. * frameNumber is the number of the frame to get the metadata for. * cim will get filled with the byte array containing the actual metadata. * return int: number of frames in the movie, -1 if the process fails to obtain the metadata. */ int hdr10plus_json_to_movie_eif(const char* path, uint8_t **&eif); /* hdr10plus_clear_movie_cim: * This function clears the allocated memory for the movie metadata array * clear: Clears the memory of the given array and size. * metadata: metadata array to be cleared. * numberOfFrames: number of frames in the metadata array. * @return */ void hdr10plus_clear_movie(uint8_t**& metadata, const int numberOfFrames); typedef struct hdr10plus_api { /* hdr10plus public API functions, documented above with hdr10plus_ prefixes */ bool (*hdr10plus_json_to_frame_cim)(const char *, uint32_t, uint8_t *&); int (*hdr10plus_json_to_movie_cim)(const char *, uint8_t **&); bool (*hdr10plus_json_to_frame_eif)(const char *, uint32_t, uint8_t *&); int (*hdr10plus_json_to_movie_eif)(const char *, uint8_t **&); void (*hdr10plus_clear_movie)(uint8_t **&, const int); } hdr10plus_api; /* hdr10plus_api: * Retrieve the programming interface for the linked hdr10plus library. */ const hdr10plus_api* hdr10plus_api_get(); #endif // HDR10PLUS_H