* qatar/master: libdirac/libschroedinger: Drop unnecessary symbol prefixes. cmdutils: check fread() return value Merged-by: Michael Niedermayer <michaelni@gmx.at>tags/n0.9
| @@ -809,6 +809,7 @@ int read_yesno(void) | |||||
| int read_file(const char *filename, char **bufptr, size_t *size) | int read_file(const char *filename, char **bufptr, size_t *size) | ||||
| { | { | ||||
| int ret; | |||||
| FILE *f = fopen(filename, "rb"); | FILE *f = fopen(filename, "rb"); | ||||
| if (!f) { | if (!f) { | ||||
| @@ -824,11 +825,22 @@ int read_file(const char *filename, char **bufptr, size_t *size) | |||||
| fclose(f); | fclose(f); | ||||
| return AVERROR(ENOMEM); | return AVERROR(ENOMEM); | ||||
| } | } | ||||
| fread(*bufptr, 1, *size, f); | |||||
| (*bufptr)[*size++] = '\0'; | |||||
| ret = fread(*bufptr, 1, *size, f); | |||||
| if (ret < *size) { | |||||
| av_free(*bufptr); | |||||
| if (ferror(f)) { | |||||
| av_log(NULL, AV_LOG_ERROR, "Error while reading file '%s': %s\n", | |||||
| filename, strerror(errno)); | |||||
| ret = AVERROR(errno); | |||||
| } else | |||||
| ret = AVERROR_EOF; | |||||
| } else { | |||||
| ret = 0; | |||||
| (*bufptr)[*size++] = '\0'; | |||||
| } | |||||
| fclose(f); | fclose(f); | ||||
| return 0; | |||||
| return ret; | |||||
| } | } | ||||
| FILE *get_preset_file(char *filename, size_t filename_size, | FILE *get_preset_file(char *filename, size_t filename_size, | ||||
| @@ -35,7 +35,7 @@ | |||||
| static const struct { | static const struct { | ||||
| enum PixelFormat ff_pix_fmt; | enum PixelFormat ff_pix_fmt; | ||||
| dirac_chroma_t dirac_pix_fmt; | dirac_chroma_t dirac_pix_fmt; | ||||
| } ffmpeg_dirac_pixel_format_map[] = { | |||||
| } dirac_pixel_format_map[] = { | |||||
| { PIX_FMT_YUV420P, format420 }, | { PIX_FMT_YUV420P, format420 }, | ||||
| { PIX_FMT_YUV422P, format422 }, | { PIX_FMT_YUV422P, format422 }, | ||||
| { PIX_FMT_YUV444P, format444 }, | { PIX_FMT_YUV444P, format444 }, | ||||
| @@ -25,7 +25,7 @@ | |||||
| #include "libdirac_libschro.h" | #include "libdirac_libschro.h" | ||||
| static const FfmpegDiracSchroVideoFormatInfo ff_dirac_schro_video_format_info[] = { | |||||
| static const DiracSchroVideoFormatInfo ff_dirac_schro_video_format_info[] = { | |||||
| { 640, 480, 24000, 1001}, | { 640, 480, 24000, 1001}, | ||||
| { 176, 120, 15000, 1001}, | { 176, 120, 15000, 1001}, | ||||
| { 176, 144, 25, 2 }, | { 176, 144, 25, 2 }, | ||||
| @@ -53,7 +53,7 @@ unsigned int ff_dirac_schro_get_video_format_idx(AVCodecContext *avccontext) | |||||
| sizeof(ff_dirac_schro_video_format_info[0]); | sizeof(ff_dirac_schro_video_format_info[0]); | ||||
| for (idx = 1; idx < num_formats; ++idx) { | for (idx = 1; idx < num_formats; ++idx) { | ||||
| const FfmpegDiracSchroVideoFormatInfo *vf = &ff_dirac_schro_video_format_info[idx]; | |||||
| const DiracSchroVideoFormatInfo *vf = &ff_dirac_schro_video_format_info[idx]; | |||||
| if (avccontext->width == vf->width && | if (avccontext->width == vf->width && | ||||
| avccontext->height == vf->height) { | avccontext->height == vf->height) { | ||||
| ret_idx = idx; | ret_idx = idx; | ||||
| @@ -65,22 +65,22 @@ unsigned int ff_dirac_schro_get_video_format_idx(AVCodecContext *avccontext) | |||||
| return ret_idx; | return ret_idx; | ||||
| } | } | ||||
| void ff_dirac_schro_queue_init(FfmpegDiracSchroQueue *queue) | |||||
| void ff_dirac_schro_queue_init(DiracSchroQueue *queue) | |||||
| { | { | ||||
| queue->p_head = queue->p_tail = NULL; | queue->p_head = queue->p_tail = NULL; | ||||
| queue->size = 0; | queue->size = 0; | ||||
| } | } | ||||
| void ff_dirac_schro_queue_free(FfmpegDiracSchroQueue *queue, | |||||
| void ff_dirac_schro_queue_free(DiracSchroQueue *queue, | |||||
| void (*free_func)(void *)) | void (*free_func)(void *)) | ||||
| { | { | ||||
| while (queue->p_head) | while (queue->p_head) | ||||
| free_func(ff_dirac_schro_queue_pop(queue)); | free_func(ff_dirac_schro_queue_pop(queue)); | ||||
| } | } | ||||
| int ff_dirac_schro_queue_push_back(FfmpegDiracSchroQueue *queue, void *p_data) | |||||
| int ff_dirac_schro_queue_push_back(DiracSchroQueue *queue, void *p_data) | |||||
| { | { | ||||
| FfmpegDiracSchroQueueElement *p_new = av_mallocz(sizeof(FfmpegDiracSchroQueueElement)); | |||||
| DiracSchroQueueElement *p_new = av_mallocz(sizeof(DiracSchroQueueElement)); | |||||
| if (!p_new) | if (!p_new) | ||||
| return -1; | return -1; | ||||
| @@ -97,9 +97,9 @@ int ff_dirac_schro_queue_push_back(FfmpegDiracSchroQueue *queue, void *p_data) | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| void *ff_dirac_schro_queue_pop(FfmpegDiracSchroQueue *queue) | |||||
| void *ff_dirac_schro_queue_pop(DiracSchroQueue *queue) | |||||
| { | { | ||||
| FfmpegDiracSchroQueueElement *top = queue->p_head; | |||||
| DiracSchroQueueElement *top = queue->p_head; | |||||
| if (top) { | if (top) { | ||||
| void *data = top->data; | void *data = top->data; | ||||
| @@ -33,7 +33,7 @@ typedef struct { | |||||
| uint16_t height; | uint16_t height; | ||||
| uint16_t frame_rate_num; | uint16_t frame_rate_num; | ||||
| uint16_t frame_rate_denom; | uint16_t frame_rate_denom; | ||||
| } FfmpegDiracSchroVideoFormatInfo; | |||||
| } DiracSchroVideoFormatInfo; | |||||
| /** | /** | ||||
| * Returns the index into the Dirac Schro common video format info table | * Returns the index into the Dirac Schro common video format info table | ||||
| @@ -43,7 +43,7 @@ unsigned int ff_dirac_schro_get_video_format_idx(AVCodecContext *avccontext); | |||||
| /** | /** | ||||
| * contains a single encoded frame returned from Dirac or Schroedinger | * contains a single encoded frame returned from Dirac or Schroedinger | ||||
| */ | */ | ||||
| typedef struct FfmpegDiracSchroEncodedFrame { | |||||
| typedef struct DiracSchroEncodedFrame { | |||||
| /** encoded frame data */ | /** encoded frame data */ | ||||
| uint8_t *p_encbuf; | uint8_t *p_encbuf; | ||||
| @@ -55,51 +55,51 @@ typedef struct FfmpegDiracSchroEncodedFrame { | |||||
| /** key frame flag. 1 : is key frame , 0 : in not key frame */ | /** key frame flag. 1 : is key frame , 0 : in not key frame */ | ||||
| uint16_t key_frame; | uint16_t key_frame; | ||||
| } FfmpegDiracSchroEncodedFrame; | |||||
| } DiracSchroEncodedFrame; | |||||
| /** | /** | ||||
| * queue element | * queue element | ||||
| */ | */ | ||||
| typedef struct FfmpegDiracSchroQueueElement { | |||||
| typedef struct DiracSchroQueueElement { | |||||
| /** Data to be stored in queue*/ | /** Data to be stored in queue*/ | ||||
| void *data; | void *data; | ||||
| /** Pointer to next element queue */ | /** Pointer to next element queue */ | ||||
| struct FfmpegDiracSchroQueueElement *next; | |||||
| } FfmpegDiracSchroQueueElement; | |||||
| struct DiracSchroQueueElement *next; | |||||
| } DiracSchroQueueElement; | |||||
| /** | /** | ||||
| * A simple queue implementation used in libdirac and libschroedinger | * A simple queue implementation used in libdirac and libschroedinger | ||||
| */ | */ | ||||
| typedef struct FfmpegDiracSchroQueue { | |||||
| typedef struct DiracSchroQueue { | |||||
| /** Pointer to head of queue */ | /** Pointer to head of queue */ | ||||
| FfmpegDiracSchroQueueElement *p_head; | |||||
| DiracSchroQueueElement *p_head; | |||||
| /** Pointer to tail of queue */ | /** Pointer to tail of queue */ | ||||
| FfmpegDiracSchroQueueElement *p_tail; | |||||
| DiracSchroQueueElement *p_tail; | |||||
| /** Queue size*/ | /** Queue size*/ | ||||
| int size; | int size; | ||||
| } FfmpegDiracSchroQueue; | |||||
| } DiracSchroQueue; | |||||
| /** | /** | ||||
| * Initialise the queue | * Initialise the queue | ||||
| */ | */ | ||||
| void ff_dirac_schro_queue_init(FfmpegDiracSchroQueue *queue); | |||||
| void ff_dirac_schro_queue_init(DiracSchroQueue *queue); | |||||
| /** | /** | ||||
| * Add an element to the end of the queue | * Add an element to the end of the queue | ||||
| */ | */ | ||||
| int ff_dirac_schro_queue_push_back(FfmpegDiracSchroQueue *queue, void *p_data); | |||||
| int ff_dirac_schro_queue_push_back(DiracSchroQueue *queue, void *p_data); | |||||
| /** | /** | ||||
| * Return the first element in the queue | * Return the first element in the queue | ||||
| */ | */ | ||||
| void *ff_dirac_schro_queue_pop(FfmpegDiracSchroQueue *queue); | |||||
| void *ff_dirac_schro_queue_pop(DiracSchroQueue *queue); | |||||
| /** | /** | ||||
| * Free the queue resources. free_func is a function supplied by the caller to | * Free the queue resources. free_func is a function supplied by the caller to | ||||
| * free any resources allocated by the caller. The data field of the queue | * free any resources allocated by the caller. The data field of the queue | ||||
| * element is passed to it. | * element is passed to it. | ||||
| */ | */ | ||||
| void ff_dirac_schro_queue_free(FfmpegDiracSchroQueue *queue, | |||||
| void ff_dirac_schro_queue_free(DiracSchroQueue *queue, | |||||
| void (*free_func)(void *)); | void (*free_func)(void *)); | ||||
| #endif /* AVCODEC_LIBDIRAC_LIBSCHRO_H */ | #endif /* AVCODEC_LIBDIRAC_LIBSCHRO_H */ | ||||
| @@ -37,34 +37,34 @@ | |||||
| #include <libdirac_decoder/dirac_parser.h> | #include <libdirac_decoder/dirac_parser.h> | ||||
| /** contains a single frame returned from Dirac */ | /** contains a single frame returned from Dirac */ | ||||
| typedef struct FfmpegDiracDecoderParams { | |||||
| typedef struct DiracDecoderParams { | |||||
| /** decoder handle */ | /** decoder handle */ | ||||
| dirac_decoder_t* p_decoder; | dirac_decoder_t* p_decoder; | ||||
| /** buffer to hold decoded frame */ | /** buffer to hold decoded frame */ | ||||
| unsigned char* p_out_frame_buf; | unsigned char* p_out_frame_buf; | ||||
| } FfmpegDiracDecoderParams; | |||||
| } DiracDecoderParams; | |||||
| /** | /** | ||||
| * returns FFmpeg chroma format | * returns FFmpeg chroma format | ||||
| */ | */ | ||||
| static enum PixelFormat GetFfmpegChromaFormat(dirac_chroma_t dirac_pix_fmt) | |||||
| static enum PixelFormat get_chroma_format(dirac_chroma_t dirac_pix_fmt) | |||||
| { | { | ||||
| int num_formats = sizeof(ffmpeg_dirac_pixel_format_map) / | |||||
| sizeof(ffmpeg_dirac_pixel_format_map[0]); | |||||
| int num_formats = sizeof(dirac_pixel_format_map) / | |||||
| sizeof(dirac_pixel_format_map[0]); | |||||
| int idx; | int idx; | ||||
| for (idx = 0; idx < num_formats; ++idx) | for (idx = 0; idx < num_formats; ++idx) | ||||
| if (ffmpeg_dirac_pixel_format_map[idx].dirac_pix_fmt == dirac_pix_fmt) | |||||
| return ffmpeg_dirac_pixel_format_map[idx].ff_pix_fmt; | |||||
| if (dirac_pixel_format_map[idx].dirac_pix_fmt == dirac_pix_fmt) | |||||
| return dirac_pixel_format_map[idx].ff_pix_fmt; | |||||
| return PIX_FMT_NONE; | return PIX_FMT_NONE; | ||||
| } | } | ||||
| static av_cold int libdirac_decode_init(AVCodecContext *avccontext) | static av_cold int libdirac_decode_init(AVCodecContext *avccontext) | ||||
| { | { | ||||
| FfmpegDiracDecoderParams *p_dirac_params = avccontext->priv_data; | |||||
| DiracDecoderParams *p_dirac_params = avccontext->priv_data; | |||||
| p_dirac_params->p_decoder = dirac_decoder_init(avccontext->debug); | p_dirac_params->p_decoder = dirac_decoder_init(avccontext->debug); | ||||
| if (!p_dirac_params->p_decoder) | if (!p_dirac_params->p_decoder) | ||||
| @@ -80,7 +80,7 @@ static int libdirac_decode_frame(AVCodecContext *avccontext, | |||||
| const uint8_t *buf = avpkt->data; | const uint8_t *buf = avpkt->data; | ||||
| int buf_size = avpkt->size; | int buf_size = avpkt->size; | ||||
| FfmpegDiracDecoderParams *p_dirac_params = avccontext->priv_data; | |||||
| DiracDecoderParams *p_dirac_params = avccontext->priv_data; | |||||
| AVPicture *picture = data; | AVPicture *picture = data; | ||||
| AVPicture pic; | AVPicture pic; | ||||
| int pict_size; | int pict_size; | ||||
| @@ -117,7 +117,7 @@ static int libdirac_decode_frame(AVCodecContext *avccontext, | |||||
| avccontext->height = src_params->height; | avccontext->height = src_params->height; | ||||
| avccontext->width = src_params->width; | avccontext->width = src_params->width; | ||||
| avccontext->pix_fmt = GetFfmpegChromaFormat(src_params->chroma); | |||||
| avccontext->pix_fmt = get_chroma_format(src_params->chroma); | |||||
| if (avccontext->pix_fmt == PIX_FMT_NONE) { | if (avccontext->pix_fmt == PIX_FMT_NONE) { | ||||
| av_log(avccontext, AV_LOG_ERROR, | av_log(avccontext, AV_LOG_ERROR, | ||||
| "Dirac chroma format %d not supported currently\n", | "Dirac chroma format %d not supported currently\n", | ||||
| @@ -174,7 +174,7 @@ static int libdirac_decode_frame(AVCodecContext *avccontext, | |||||
| static av_cold int libdirac_decode_close(AVCodecContext *avccontext) | static av_cold int libdirac_decode_close(AVCodecContext *avccontext) | ||||
| { | { | ||||
| FfmpegDiracDecoderParams *p_dirac_params = avccontext->priv_data; | |||||
| DiracDecoderParams *p_dirac_params = avccontext->priv_data; | |||||
| dirac_decoder_close(p_dirac_params->p_decoder); | dirac_decoder_close(p_dirac_params->p_decoder); | ||||
| av_freep(&p_dirac_params->p_out_frame_buf); | av_freep(&p_dirac_params->p_out_frame_buf); | ||||
| @@ -198,7 +198,7 @@ AVCodec ff_libdirac_decoder = { | |||||
| .name = "libdirac", | .name = "libdirac", | ||||
| .type = AVMEDIA_TYPE_VIDEO, | .type = AVMEDIA_TYPE_VIDEO, | ||||
| .id = CODEC_ID_DIRAC, | .id = CODEC_ID_DIRAC, | ||||
| .priv_data_size = sizeof(FfmpegDiracDecoderParams), | |||||
| .priv_data_size = sizeof(DiracDecoderParams), | |||||
| .init = libdirac_decode_init, | .init = libdirac_decode_init, | ||||
| .close = libdirac_decode_close, | .close = libdirac_decode_close, | ||||
| .decode = libdirac_decode_frame, | .decode = libdirac_decode_frame, | ||||
| @@ -38,7 +38,7 @@ | |||||
| #include <libdirac_encoder/dirac_encoder.h> | #include <libdirac_encoder/dirac_encoder.h> | ||||
| /** Dirac encoder private data */ | /** Dirac encoder private data */ | ||||
| typedef struct FfmpegDiracEncoderParams { | |||||
| typedef struct DiracEncoderParams { | |||||
| /** Dirac encoder context */ | /** Dirac encoder context */ | ||||
| dirac_encoder_context_t enc_ctx; | dirac_encoder_context_t enc_ctx; | ||||
| @@ -61,27 +61,27 @@ typedef struct FfmpegDiracEncoderParams { | |||||
| int enc_buf_size; | int enc_buf_size; | ||||
| /** queue storing encoded frames */ | /** queue storing encoded frames */ | ||||
| FfmpegDiracSchroQueue enc_frame_queue; | |||||
| DiracSchroQueue enc_frame_queue; | |||||
| /** end of sequence signalled by user, 0 - false, 1 - true */ | /** end of sequence signalled by user, 0 - false, 1 - true */ | ||||
| int eos_signalled; | int eos_signalled; | ||||
| /** end of sequence returned by encoder, 0 - false, 1 - true */ | /** end of sequence returned by encoder, 0 - false, 1 - true */ | ||||
| int eos_pulled; | int eos_pulled; | ||||
| } FfmpegDiracEncoderParams; | |||||
| } DiracEncoderParams; | |||||
| /** | /** | ||||
| * Works out Dirac-compatible chroma format. | * Works out Dirac-compatible chroma format. | ||||
| */ | */ | ||||
| static dirac_chroma_t GetDiracChromaFormat(enum PixelFormat ff_pix_fmt) | static dirac_chroma_t GetDiracChromaFormat(enum PixelFormat ff_pix_fmt) | ||||
| { | { | ||||
| int num_formats = sizeof(ffmpeg_dirac_pixel_format_map) / | |||||
| sizeof(ffmpeg_dirac_pixel_format_map[0]); | |||||
| int num_formats = sizeof(dirac_pixel_format_map) / | |||||
| sizeof(dirac_pixel_format_map[0]); | |||||
| int idx; | int idx; | ||||
| for (idx = 0; idx < num_formats; ++idx) | for (idx = 0; idx < num_formats; ++idx) | ||||
| if (ffmpeg_dirac_pixel_format_map[idx].ff_pix_fmt == ff_pix_fmt) | |||||
| return ffmpeg_dirac_pixel_format_map[idx].dirac_pix_fmt; | |||||
| if (dirac_pixel_format_map[idx].ff_pix_fmt == ff_pix_fmt) | |||||
| return dirac_pixel_format_map[idx].dirac_pix_fmt; | |||||
| return formatNK; | return formatNK; | ||||
| } | } | ||||
| @@ -127,7 +127,7 @@ static VideoFormat GetDiracVideoFormatPreset(AVCodecContext *avccontext) | |||||
| static av_cold int libdirac_encode_init(AVCodecContext *avccontext) | static av_cold int libdirac_encode_init(AVCodecContext *avccontext) | ||||
| { | { | ||||
| FfmpegDiracEncoderParams* p_dirac_params = avccontext->priv_data; | |||||
| DiracEncoderParams* p_dirac_params = avccontext->priv_data; | |||||
| int no_local = 1; | int no_local = 1; | ||||
| int verbose = avccontext->debug; | int verbose = avccontext->debug; | ||||
| VideoFormat preset; | VideoFormat preset; | ||||
| @@ -219,7 +219,7 @@ static av_cold int libdirac_encode_init(AVCodecContext *avccontext) | |||||
| static void DiracFreeFrame(void *data) | static void DiracFreeFrame(void *data) | ||||
| { | { | ||||
| FfmpegDiracSchroEncodedFrame *enc_frame = data; | |||||
| DiracSchroEncodedFrame *enc_frame = data; | |||||
| av_freep(&(enc_frame->p_encbuf)); | av_freep(&(enc_frame->p_encbuf)); | ||||
| av_free(enc_frame); | av_free(enc_frame); | ||||
| @@ -231,9 +231,9 @@ static int libdirac_encode_frame(AVCodecContext *avccontext, | |||||
| { | { | ||||
| int enc_size = 0; | int enc_size = 0; | ||||
| dirac_encoder_state_t state; | dirac_encoder_state_t state; | ||||
| FfmpegDiracEncoderParams* p_dirac_params = avccontext->priv_data; | |||||
| FfmpegDiracSchroEncodedFrame* p_frame_output = NULL; | |||||
| FfmpegDiracSchroEncodedFrame* p_next_output_frame = NULL; | |||||
| DiracEncoderParams *p_dirac_params = avccontext->priv_data; | |||||
| DiracSchroEncodedFrame *p_frame_output = NULL; | |||||
| DiracSchroEncodedFrame *p_next_output_frame = NULL; | |||||
| int go = 1; | int go = 1; | ||||
| int last_frame_in_sequence = 0; | int last_frame_in_sequence = 0; | ||||
| @@ -303,7 +303,7 @@ static int libdirac_encode_frame(AVCodecContext *avccontext, | |||||
| break; | break; | ||||
| /* create output frame */ | /* create output frame */ | ||||
| p_frame_output = av_mallocz(sizeof(FfmpegDiracSchroEncodedFrame)); | |||||
| p_frame_output = av_mallocz(sizeof(DiracSchroEncodedFrame)); | |||||
| /* set output data */ | /* set output data */ | ||||
| p_frame_output->size = p_dirac_params->enc_buf_size; | p_frame_output->size = p_dirac_params->enc_buf_size; | ||||
| p_frame_output->p_encbuf = p_dirac_params->enc_buf; | p_frame_output->p_encbuf = p_dirac_params->enc_buf; | ||||
| @@ -371,7 +371,7 @@ static int libdirac_encode_frame(AVCodecContext *avccontext, | |||||
| static av_cold int libdirac_encode_close(AVCodecContext *avccontext) | static av_cold int libdirac_encode_close(AVCodecContext *avccontext) | ||||
| { | { | ||||
| FfmpegDiracEncoderParams* p_dirac_params = avccontext->priv_data; | |||||
| DiracEncoderParams *p_dirac_params = avccontext->priv_data; | |||||
| /* close the encoder */ | /* close the encoder */ | ||||
| dirac_encoder_close(p_dirac_params->p_encoder); | dirac_encoder_close(p_dirac_params->p_encoder); | ||||
| @@ -395,7 +395,7 @@ AVCodec ff_libdirac_encoder = { | |||||
| .name = "libdirac", | .name = "libdirac", | ||||
| .type = AVMEDIA_TYPE_VIDEO, | .type = AVMEDIA_TYPE_VIDEO, | ||||
| .id = CODEC_ID_DIRAC, | .id = CODEC_ID_DIRAC, | ||||
| .priv_data_size = sizeof(FfmpegDiracEncoderParams), | |||||
| .priv_data_size = sizeof(DiracEncoderParams), | |||||
| .init = libdirac_encode_init, | .init = libdirac_encode_init, | ||||
| .encode = libdirac_encode_frame, | .encode = libdirac_encode_frame, | ||||
| .close = libdirac_encode_close, | .close = libdirac_encode_close, | ||||
| @@ -64,14 +64,14 @@ SchroVideoFormatEnum ff_get_schro_video_format_preset(AVCodecContext *avccontext | |||||
| int ff_get_schro_frame_format (SchroChromaFormat schro_pix_fmt, | int ff_get_schro_frame_format (SchroChromaFormat schro_pix_fmt, | ||||
| SchroFrameFormat *schro_frame_fmt) | SchroFrameFormat *schro_frame_fmt) | ||||
| { | { | ||||
| unsigned int num_formats = sizeof(ffmpeg_schro_pixel_format_map) / | |||||
| sizeof(ffmpeg_schro_pixel_format_map[0]); | |||||
| unsigned int num_formats = sizeof(schro_pixel_format_map) / | |||||
| sizeof(schro_pixel_format_map[0]); | |||||
| int idx; | int idx; | ||||
| for (idx = 0; idx < num_formats; ++idx) { | for (idx = 0; idx < num_formats; ++idx) { | ||||
| if (ffmpeg_schro_pixel_format_map[idx].schro_pix_fmt == schro_pix_fmt) { | |||||
| *schro_frame_fmt = ffmpeg_schro_pixel_format_map[idx].schro_frame_fmt; | |||||
| if (schro_pixel_format_map[idx].schro_pix_fmt == schro_pix_fmt) { | |||||
| *schro_frame_fmt = schro_pixel_format_map[idx].schro_frame_fmt; | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| } | } | ||||
| @@ -34,7 +34,7 @@ static const struct { | |||||
| enum PixelFormat ff_pix_fmt; | enum PixelFormat ff_pix_fmt; | ||||
| SchroChromaFormat schro_pix_fmt; | SchroChromaFormat schro_pix_fmt; | ||||
| SchroFrameFormat schro_frame_fmt; | SchroFrameFormat schro_frame_fmt; | ||||
| } ffmpeg_schro_pixel_format_map[] = { | |||||
| } schro_pixel_format_map[] = { | |||||
| { PIX_FMT_YUV420P, SCHRO_CHROMA_420, SCHRO_FRAME_FORMAT_U8_420 }, | { PIX_FMT_YUV420P, SCHRO_CHROMA_420, SCHRO_FRAME_FORMAT_U8_420 }, | ||||
| { PIX_FMT_YUV422P, SCHRO_CHROMA_422, SCHRO_FRAME_FORMAT_U8_422 }, | { PIX_FMT_YUV422P, SCHRO_CHROMA_422, SCHRO_FRAME_FORMAT_U8_422 }, | ||||
| { PIX_FMT_YUV444P, SCHRO_CHROMA_444, SCHRO_FRAME_FORMAT_U8_444 }, | { PIX_FMT_YUV444P, SCHRO_CHROMA_444, SCHRO_FRAME_FORMAT_U8_444 }, | ||||
| @@ -41,7 +41,7 @@ | |||||
| #include <schroedinger/schrovideoformat.h> | #include <schroedinger/schrovideoformat.h> | ||||
| /** libschroedinger decoder private data */ | /** libschroedinger decoder private data */ | ||||
| typedef struct FfmpegSchroDecoderParams { | |||||
| typedef struct SchroDecoderParams { | |||||
| /** Schroedinger video format */ | /** Schroedinger video format */ | ||||
| SchroVideoFormat *format; | SchroVideoFormat *format; | ||||
| @@ -52,7 +52,7 @@ typedef struct FfmpegSchroDecoderParams { | |||||
| SchroDecoder* decoder; | SchroDecoder* decoder; | ||||
| /** queue storing decoded frames */ | /** queue storing decoded frames */ | ||||
| FfmpegDiracSchroQueue dec_frame_queue; | |||||
| DiracSchroQueue dec_frame_queue; | |||||
| /** end of sequence signalled */ | /** end of sequence signalled */ | ||||
| int eos_signalled; | int eos_signalled; | ||||
| @@ -62,25 +62,25 @@ typedef struct FfmpegSchroDecoderParams { | |||||
| /** decoded picture */ | /** decoded picture */ | ||||
| AVPicture dec_pic; | AVPicture dec_pic; | ||||
| } FfmpegSchroDecoderParams; | |||||
| } SchroDecoderParams; | |||||
| typedef struct FfmpegSchroParseUnitContext { | |||||
| typedef struct SchroParseUnitContext { | |||||
| const uint8_t *buf; | const uint8_t *buf; | ||||
| int buf_size; | int buf_size; | ||||
| } FfmpegSchroParseUnitContext; | |||||
| } SchroParseUnitContext; | |||||
| static void libschroedinger_decode_buffer_free(SchroBuffer *schro_buf, | static void libschroedinger_decode_buffer_free(SchroBuffer *schro_buf, | ||||
| void *priv); | void *priv); | ||||
| static void FfmpegSchroParseContextInit(FfmpegSchroParseUnitContext *parse_ctx, | |||||
| const uint8_t *buf, int buf_size) | |||||
| static void SchroParseContextInit(SchroParseUnitContext *parse_ctx, | |||||
| const uint8_t *buf, int buf_size) | |||||
| { | { | ||||
| parse_ctx->buf = buf; | parse_ctx->buf = buf; | ||||
| parse_ctx->buf_size = buf_size; | parse_ctx->buf_size = buf_size; | ||||
| } | } | ||||
| static SchroBuffer* FfmpegFindNextSchroParseUnit(FfmpegSchroParseUnitContext *parse_ctx) | |||||
| static SchroBuffer *FindNextSchroParseUnit(SchroParseUnitContext *parse_ctx) | |||||
| { | { | ||||
| SchroBuffer *enc_buf = NULL; | SchroBuffer *enc_buf = NULL; | ||||
| int next_pu_offset = 0; | int next_pu_offset = 0; | ||||
| @@ -120,22 +120,22 @@ static SchroBuffer* FfmpegFindNextSchroParseUnit(FfmpegSchroParseUnitContext *pa | |||||
| /** | /** | ||||
| * Returns FFmpeg chroma format. | * Returns FFmpeg chroma format. | ||||
| */ | */ | ||||
| static enum PixelFormat GetFfmpegChromaFormat(SchroChromaFormat schro_pix_fmt) | |||||
| static enum PixelFormat get_chroma_format(SchroChromaFormat schro_pix_fmt) | |||||
| { | { | ||||
| int num_formats = sizeof(ffmpeg_schro_pixel_format_map) / | |||||
| sizeof(ffmpeg_schro_pixel_format_map[0]); | |||||
| int num_formats = sizeof(schro_pixel_format_map) / | |||||
| sizeof(schro_pixel_format_map[0]); | |||||
| int idx; | int idx; | ||||
| for (idx = 0; idx < num_formats; ++idx) | for (idx = 0; idx < num_formats; ++idx) | ||||
| if (ffmpeg_schro_pixel_format_map[idx].schro_pix_fmt == schro_pix_fmt) | |||||
| return ffmpeg_schro_pixel_format_map[idx].ff_pix_fmt; | |||||
| if (schro_pixel_format_map[idx].schro_pix_fmt == schro_pix_fmt) | |||||
| return schro_pixel_format_map[idx].ff_pix_fmt; | |||||
| return PIX_FMT_NONE; | return PIX_FMT_NONE; | ||||
| } | } | ||||
| static av_cold int libschroedinger_decode_init(AVCodecContext *avccontext) | static av_cold int libschroedinger_decode_init(AVCodecContext *avccontext) | ||||
| { | { | ||||
| FfmpegSchroDecoderParams *p_schro_params = avccontext->priv_data; | |||||
| SchroDecoderParams *p_schro_params = avccontext->priv_data; | |||||
| /* First of all, initialize our supporting libraries. */ | /* First of all, initialize our supporting libraries. */ | ||||
| schro_init(); | schro_init(); | ||||
| @@ -164,7 +164,7 @@ static void libschroedinger_decode_frame_free(void *frame) | |||||
| static void libschroedinger_handle_first_access_unit(AVCodecContext *avccontext) | static void libschroedinger_handle_first_access_unit(AVCodecContext *avccontext) | ||||
| { | { | ||||
| FfmpegSchroDecoderParams *p_schro_params = avccontext->priv_data; | |||||
| SchroDecoderParams *p_schro_params = avccontext->priv_data; | |||||
| SchroDecoder *decoder = p_schro_params->decoder; | SchroDecoder *decoder = p_schro_params->decoder; | ||||
| p_schro_params->format = schro_decoder_get_video_format(decoder); | p_schro_params->format = schro_decoder_get_video_format(decoder); | ||||
| @@ -179,7 +179,7 @@ static void libschroedinger_handle_first_access_unit(AVCodecContext *avccontext) | |||||
| } | } | ||||
| avccontext->height = p_schro_params->format->height; | avccontext->height = p_schro_params->format->height; | ||||
| avccontext->width = p_schro_params->format->width; | avccontext->width = p_schro_params->format->width; | ||||
| avccontext->pix_fmt = GetFfmpegChromaFormat(p_schro_params->format->chroma_format); | |||||
| avccontext->pix_fmt = get_chroma_format(p_schro_params->format->chroma_format); | |||||
| if (ff_get_schro_frame_format(p_schro_params->format->chroma_format, | if (ff_get_schro_frame_format(p_schro_params->format->chroma_format, | ||||
| &p_schro_params->frame_format) == -1) { | &p_schro_params->frame_format) == -1) { | ||||
| @@ -206,7 +206,7 @@ static int libschroedinger_decode_frame(AVCodecContext *avccontext, | |||||
| const uint8_t *buf = avpkt->data; | const uint8_t *buf = avpkt->data; | ||||
| int buf_size = avpkt->size; | int buf_size = avpkt->size; | ||||
| FfmpegSchroDecoderParams *p_schro_params = avccontext->priv_data; | |||||
| SchroDecoderParams *p_schro_params = avccontext->priv_data; | |||||
| SchroDecoder *decoder = p_schro_params->decoder; | SchroDecoder *decoder = p_schro_params->decoder; | ||||
| AVPicture *picture = data; | AVPicture *picture = data; | ||||
| SchroBuffer *enc_buf; | SchroBuffer *enc_buf; | ||||
| @@ -214,11 +214,11 @@ static int libschroedinger_decode_frame(AVCodecContext *avccontext, | |||||
| int state; | int state; | ||||
| int go = 1; | int go = 1; | ||||
| int outer = 1; | int outer = 1; | ||||
| FfmpegSchroParseUnitContext parse_ctx; | |||||
| SchroParseUnitContext parse_ctx; | |||||
| *data_size = 0; | *data_size = 0; | ||||
| FfmpegSchroParseContextInit(&parse_ctx, buf, buf_size); | |||||
| SchroParseContextInit(&parse_ctx, buf, buf_size); | |||||
| if (!buf_size) { | if (!buf_size) { | ||||
| if (!p_schro_params->eos_signalled) { | if (!p_schro_params->eos_signalled) { | ||||
| state = schro_decoder_push_end_of_stream(decoder); | state = schro_decoder_push_end_of_stream(decoder); | ||||
| @@ -228,7 +228,7 @@ static int libschroedinger_decode_frame(AVCodecContext *avccontext, | |||||
| /* Loop through all the individual parse units in the input buffer */ | /* Loop through all the individual parse units in the input buffer */ | ||||
| do { | do { | ||||
| if ((enc_buf = FfmpegFindNextSchroParseUnit(&parse_ctx))) { | |||||
| if ((enc_buf = FindNextSchroParseUnit(&parse_ctx))) { | |||||
| /* Push buffer into decoder. */ | /* Push buffer into decoder. */ | ||||
| if (SCHRO_PARSE_CODE_IS_PICTURE(enc_buf->data[4]) && | if (SCHRO_PARSE_CODE_IS_PICTURE(enc_buf->data[4]) && | ||||
| SCHRO_PARSE_CODE_NUM_REFS(enc_buf->data[4]) > 0) | SCHRO_PARSE_CODE_NUM_REFS(enc_buf->data[4]) > 0) | ||||
| @@ -314,7 +314,7 @@ static int libschroedinger_decode_frame(AVCodecContext *avccontext, | |||||
| static av_cold int libschroedinger_decode_close(AVCodecContext *avccontext) | static av_cold int libschroedinger_decode_close(AVCodecContext *avccontext) | ||||
| { | { | ||||
| FfmpegSchroDecoderParams *p_schro_params = avccontext->priv_data; | |||||
| SchroDecoderParams *p_schro_params = avccontext->priv_data; | |||||
| /* Free the decoder. */ | /* Free the decoder. */ | ||||
| schro_decoder_free(p_schro_params->decoder); | schro_decoder_free(p_schro_params->decoder); | ||||
| av_freep(&p_schro_params->format); | av_freep(&p_schro_params->format); | ||||
| @@ -332,7 +332,7 @@ static void libschroedinger_flush(AVCodecContext *avccontext) | |||||
| { | { | ||||
| /* Got a seek request. Free the decoded frames queue and then reset | /* Got a seek request. Free the decoded frames queue and then reset | ||||
| * the decoder */ | * the decoder */ | ||||
| FfmpegSchroDecoderParams *p_schro_params = avccontext->priv_data; | |||||
| SchroDecoderParams *p_schro_params = avccontext->priv_data; | |||||
| /* Free data in the output frame queue. */ | /* Free data in the output frame queue. */ | ||||
| ff_dirac_schro_queue_free(&p_schro_params->dec_frame_queue, | ff_dirac_schro_queue_free(&p_schro_params->dec_frame_queue, | ||||
| @@ -348,7 +348,7 @@ AVCodec ff_libschroedinger_decoder = { | |||||
| .name = "libschroedinger", | .name = "libschroedinger", | ||||
| .type = AVMEDIA_TYPE_VIDEO, | .type = AVMEDIA_TYPE_VIDEO, | ||||
| .id = CODEC_ID_DIRAC, | .id = CODEC_ID_DIRAC, | ||||
| .priv_data_size = sizeof(FfmpegSchroDecoderParams), | |||||
| .priv_data_size = sizeof(SchroDecoderParams), | |||||
| .init = libschroedinger_decode_init, | .init = libschroedinger_decode_init, | ||||
| .close = libschroedinger_decode_close, | .close = libschroedinger_decode_close, | ||||
| .decode = libschroedinger_decode_frame, | .decode = libschroedinger_decode_frame, | ||||
| @@ -41,7 +41,7 @@ | |||||
| /** libschroedinger encoder private data */ | /** libschroedinger encoder private data */ | ||||
| typedef struct FfmpegSchroEncoderParams { | |||||
| typedef struct SchroEncoderParams { | |||||
| /** Schroedinger video format */ | /** Schroedinger video format */ | ||||
| SchroVideoFormat *format; | SchroVideoFormat *format; | ||||
| @@ -64,31 +64,31 @@ typedef struct FfmpegSchroEncoderParams { | |||||
| int enc_buf_size; | int enc_buf_size; | ||||
| /** queue storing encoded frames */ | /** queue storing encoded frames */ | ||||
| FfmpegDiracSchroQueue enc_frame_queue; | |||||
| DiracSchroQueue enc_frame_queue; | |||||
| /** end of sequence signalled */ | /** end of sequence signalled */ | ||||
| int eos_signalled; | int eos_signalled; | ||||
| /** end of sequence pulled */ | /** end of sequence pulled */ | ||||
| int eos_pulled; | int eos_pulled; | ||||
| } FfmpegSchroEncoderParams; | |||||
| } SchroEncoderParams; | |||||
| /** | /** | ||||
| * Works out Schro-compatible chroma format. | * Works out Schro-compatible chroma format. | ||||
| */ | */ | ||||
| static int SetSchroChromaFormat(AVCodecContext *avccontext) | static int SetSchroChromaFormat(AVCodecContext *avccontext) | ||||
| { | { | ||||
| int num_formats = sizeof(ffmpeg_schro_pixel_format_map) / | |||||
| sizeof(ffmpeg_schro_pixel_format_map[0]); | |||||
| int num_formats = sizeof(schro_pixel_format_map) / | |||||
| sizeof(schro_pixel_format_map[0]); | |||||
| int idx; | int idx; | ||||
| FfmpegSchroEncoderParams* p_schro_params = avccontext->priv_data; | |||||
| SchroEncoderParams *p_schro_params = avccontext->priv_data; | |||||
| for (idx = 0; idx < num_formats; ++idx) { | for (idx = 0; idx < num_formats; ++idx) { | ||||
| if (ffmpeg_schro_pixel_format_map[idx].ff_pix_fmt == | |||||
| if (schro_pixel_format_map[idx].ff_pix_fmt == | |||||
| avccontext->pix_fmt) { | avccontext->pix_fmt) { | ||||
| p_schro_params->format->chroma_format = | p_schro_params->format->chroma_format = | ||||
| ffmpeg_schro_pixel_format_map[idx].schro_pix_fmt; | |||||
| schro_pixel_format_map[idx].schro_pix_fmt; | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| } | } | ||||
| @@ -102,7 +102,7 @@ static int SetSchroChromaFormat(AVCodecContext *avccontext) | |||||
| static int libschroedinger_encode_init(AVCodecContext *avccontext) | static int libschroedinger_encode_init(AVCodecContext *avccontext) | ||||
| { | { | ||||
| FfmpegSchroEncoderParams* p_schro_params = avccontext->priv_data; | |||||
| SchroEncoderParams *p_schro_params = avccontext->priv_data; | |||||
| SchroVideoFormatEnum preset; | SchroVideoFormatEnum preset; | ||||
| /* Initialize the libraries that libschroedinger depends on. */ | /* Initialize the libraries that libschroedinger depends on. */ | ||||
| @@ -238,7 +238,7 @@ static int libschroedinger_encode_init(AVCodecContext *avccontext) | |||||
| static SchroFrame *libschroedinger_frame_from_data(AVCodecContext *avccontext, | static SchroFrame *libschroedinger_frame_from_data(AVCodecContext *avccontext, | ||||
| void *in_data) | void *in_data) | ||||
| { | { | ||||
| FfmpegSchroEncoderParams* p_schro_params = avccontext->priv_data; | |||||
| SchroEncoderParams *p_schro_params = avccontext->priv_data; | |||||
| SchroFrame *in_frame; | SchroFrame *in_frame; | ||||
| /* Input line size may differ from what the codec supports. Especially | /* Input line size may differ from what the codec supports. Especially | ||||
| * when transcoding from one format to another. So use avpicture_layout | * when transcoding from one format to another. So use avpicture_layout | ||||
| @@ -256,7 +256,7 @@ static SchroFrame *libschroedinger_frame_from_data(AVCodecContext *avccontext, | |||||
| static void SchroedingerFreeFrame(void *data) | static void SchroedingerFreeFrame(void *data) | ||||
| { | { | ||||
| FfmpegDiracSchroEncodedFrame *enc_frame = data; | |||||
| DiracSchroEncodedFrame *enc_frame = data; | |||||
| av_freep(&(enc_frame->p_encbuf)); | av_freep(&(enc_frame->p_encbuf)); | ||||
| av_free(enc_frame); | av_free(enc_frame); | ||||
| @@ -267,9 +267,9 @@ static int libschroedinger_encode_frame(AVCodecContext *avccontext, | |||||
| int buf_size, void *data) | int buf_size, void *data) | ||||
| { | { | ||||
| int enc_size = 0; | int enc_size = 0; | ||||
| FfmpegSchroEncoderParams* p_schro_params = avccontext->priv_data; | |||||
| SchroEncoderParams *p_schro_params = avccontext->priv_data; | |||||
| SchroEncoder *encoder = p_schro_params->encoder; | SchroEncoder *encoder = p_schro_params->encoder; | ||||
| struct FfmpegDiracSchroEncodedFrame* p_frame_output = NULL; | |||||
| struct DiracSchroEncodedFrame *p_frame_output = NULL; | |||||
| int go = 1; | int go = 1; | ||||
| SchroBuffer *enc_buf; | SchroBuffer *enc_buf; | ||||
| int presentation_frame; | int presentation_frame; | ||||
| @@ -328,7 +328,7 @@ static int libschroedinger_encode_frame(AVCodecContext *avccontext, | |||||
| } | } | ||||
| /* Create output frame. */ | /* Create output frame. */ | ||||
| p_frame_output = av_mallocz(sizeof(FfmpegDiracSchroEncodedFrame)); | |||||
| p_frame_output = av_mallocz(sizeof(DiracSchroEncodedFrame)); | |||||
| /* Set output data. */ | /* Set output data. */ | ||||
| p_frame_output->size = p_schro_params->enc_buf_size; | p_frame_output->size = p_schro_params->enc_buf_size; | ||||
| p_frame_output->p_encbuf = p_schro_params->enc_buf; | p_frame_output->p_encbuf = p_schro_params->enc_buf; | ||||
| @@ -400,8 +400,7 @@ static int libschroedinger_encode_frame(AVCodecContext *avccontext, | |||||
| static int libschroedinger_encode_close(AVCodecContext *avccontext) | static int libschroedinger_encode_close(AVCodecContext *avccontext) | ||||
| { | { | ||||
| FfmpegSchroEncoderParams* p_schro_params = avccontext->priv_data; | |||||
| SchroEncoderParams *p_schro_params = avccontext->priv_data; | |||||
| /* Close the encoder. */ | /* Close the encoder. */ | ||||
| schro_encoder_free(p_schro_params->encoder); | schro_encoder_free(p_schro_params->encoder); | ||||
| @@ -426,7 +425,7 @@ AVCodec ff_libschroedinger_encoder = { | |||||
| .name = "libschroedinger", | .name = "libschroedinger", | ||||
| .type = AVMEDIA_TYPE_VIDEO, | .type = AVMEDIA_TYPE_VIDEO, | ||||
| .id = CODEC_ID_DIRAC, | .id = CODEC_ID_DIRAC, | ||||
| .priv_data_size = sizeof(FfmpegSchroEncoderParams), | |||||
| .priv_data_size = sizeof(SchroEncoderParams), | |||||
| .init = libschroedinger_encode_init, | .init = libschroedinger_encode_init, | ||||
| .encode = libschroedinger_encode_frame, | .encode = libschroedinger_encode_frame, | ||||
| .close = libschroedinger_encode_close, | .close = libschroedinger_encode_close, | ||||