comparison avcodec.h @ 4566:1cb0cac7b19d libavcodec

Add more Doxygen documentation.
author takis
date Thu, 22 Feb 2007 18:59:05 +0000
parents 53ed3a394b4b
children f0138063c568
comparison
equal deleted inserted replaced
4565:8ae1cba27dbe 4566:1cb0cac7b19d
894 894
895 int b_frame_strategy; 895 int b_frame_strategy;
896 896
897 /** 897 /**
898 * hurry up amount. 898 * hurry up amount.
899 * deprecated in favor of skip_idct and skip_frame
900 * - encoding: unused 899 * - encoding: unused
901 * - decoding: set by user. 1-> skip b frames, 2-> skip idct/dequant too, 5-> skip everything except header 900 * - decoding: set by user. 1-> skip b frames, 2-> skip idct/dequant too, 5-> skip everything except header
901 * @deprecated Deprecated in favor of skip_idct and skip_frame.
902 */ 902 */
903 int hurry_up; 903 int hurry_up;
904 904
905 struct AVCodec *codec; 905 struct AVCodec *codec;
906 906
2437 * 2437 *
2438 * @param picture the picture to be filled in. 2438 * @param picture the picture to be filled in.
2439 * @param pix_fmt the format of the picture. 2439 * @param pix_fmt the format of the picture.
2440 * @param width the width of the picture. 2440 * @param width the width of the picture.
2441 * @param height the height of the picture. 2441 * @param height the height of the picture.
2442 * @return 0 if successful, -1 if not. 2442 * @return Zero if successful, a negative value if not.
2443 */ 2443 */
2444 int avpicture_alloc(AVPicture *picture, int pix_fmt, int width, int height); 2444 int avpicture_alloc(AVPicture *picture, int pix_fmt, int width, int height);
2445 2445
2446 /* Free a picture previously allocated by avpicture_alloc. */ 2446 /* Free a picture previously allocated by avpicture_alloc. */
2447 void avpicture_free(AVPicture *picture); 2447 void avpicture_free(AVPicture *picture);
2491 2491
2492 /* returns LIBAVCODEC_VERSION_INT constant */ 2492 /* returns LIBAVCODEC_VERSION_INT constant */
2493 unsigned avcodec_version(void); 2493 unsigned avcodec_version(void);
2494 /* returns LIBAVCODEC_BUILD constant */ 2494 /* returns LIBAVCODEC_BUILD constant */
2495 unsigned avcodec_build(void); 2495 unsigned avcodec_build(void);
2496
2497 /**
2498 * Initializes libavcodec.
2499 *
2500 * @warning This function \e must be called before any other libavcodec
2501 * function.
2502 */
2496 void avcodec_init(void); 2503 void avcodec_init(void);
2497 2504
2498 void register_avcodec(AVCodec *format); 2505 void register_avcodec(AVCodec *format);
2506
2507 /**
2508 * Finds an encoder with a matching codec ID.
2509 *
2510 * @param id CodecID of the requested encoder.
2511 * @return An encoder if one was found, NULL otherwise.
2512 */
2499 AVCodec *avcodec_find_encoder(enum CodecID id); 2513 AVCodec *avcodec_find_encoder(enum CodecID id);
2514
2515 /**
2516 * Finds an encoder with the specified name.
2517 *
2518 * @param name Name of the requested encoder.
2519 * @return An encoder if one was found, NULL otherwise.
2520 */
2500 AVCodec *avcodec_find_encoder_by_name(const char *name); 2521 AVCodec *avcodec_find_encoder_by_name(const char *name);
2522
2523 /**
2524 * Finds a decoder with a matching codec ID.
2525 *
2526 * @param id CodecID of the requested decoder.
2527 * @return A decoder if one was found, NULL otherwise.
2528 */
2501 AVCodec *avcodec_find_decoder(enum CodecID id); 2529 AVCodec *avcodec_find_decoder(enum CodecID id);
2530
2531 /**
2532 * Finds an decoder with the specified name.
2533 *
2534 * @param name Name of the requested decoder.
2535 * @return A decoder if one was found, NULL otherwise.
2536 */
2502 AVCodec *avcodec_find_decoder_by_name(const char *name); 2537 AVCodec *avcodec_find_decoder_by_name(const char *name);
2503 void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode); 2538 void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode);
2504 2539
2540 /**
2541 * Sets the fields of the given AVCodecContext to default values.
2542 *
2543 * @param s The AVCodecContext of which the fields should be set to default values.
2544 */
2505 void avcodec_get_context_defaults(AVCodecContext *s); 2545 void avcodec_get_context_defaults(AVCodecContext *s);
2546
2547 /**
2548 * Allocates an AVCodecContext and sets its fields to default values. The
2549 * resulting struct can be deallocated by simply calling av_free().
2550 *
2551 * @return An AVCodecContext filled with default values or NULL on failure.
2552 * @see avcodec_get_context_defaults
2553 */
2506 AVCodecContext *avcodec_alloc_context(void); 2554 AVCodecContext *avcodec_alloc_context(void);
2555
2556 /**
2557 * Sets the fields of the given AVFrame to default values.
2558 *
2559 * @param pic The AVFrame of which the fields should be set to default values.
2560 */
2507 void avcodec_get_frame_defaults(AVFrame *pic); 2561 void avcodec_get_frame_defaults(AVFrame *pic);
2562
2563 /**
2564 * Allocates an AVFrame and sets its fields to default values. The resulting
2565 * struct can be deallocated by simply calling av_free().
2566 *
2567 * @return An AVFrame filled with default values or NULL on failure.
2568 * @see avcodec_get_frame_defaults
2569 */
2508 AVFrame *avcodec_alloc_frame(void); 2570 AVFrame *avcodec_alloc_frame(void);
2509 2571
2510 int avcodec_default_get_buffer(AVCodecContext *s, AVFrame *pic); 2572 int avcodec_default_get_buffer(AVCodecContext *s, AVFrame *pic);
2511 void avcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic); 2573 void avcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic);
2512 int avcodec_default_reget_buffer(AVCodecContext *s, AVFrame *pic); 2574 int avcodec_default_reget_buffer(AVCodecContext *s, AVFrame *pic);
2513 void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height); 2575 void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height);
2576
2577 /**
2578 * Checks if the given dimension of a picture is valid, meaning that all
2579 * bytes of the picture can be addressed with a signed int.
2580 *
2581 * @param[in] w Width of the picture.
2582 * @param[in] h Height of the picture.
2583 * @return Zero if valid, a negative value if invalid.
2584 */
2514 int avcodec_check_dimensions(void *av_log_ctx, unsigned int w, unsigned int h); 2585 int avcodec_check_dimensions(void *av_log_ctx, unsigned int w, unsigned int h);
2515 enum PixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum PixelFormat * fmt); 2586 enum PixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum PixelFormat * fmt);
2516 2587
2517 int avcodec_thread_init(AVCodecContext *s, int thread_count); 2588 int avcodec_thread_init(AVCodecContext *s, int thread_count);
2518 void avcodec_thread_free(AVCodecContext *s); 2589 void avcodec_thread_free(AVCodecContext *s);
2519 int avcodec_thread_execute(AVCodecContext *s, int (*func)(AVCodecContext *c2, void *arg2),void **arg, int *ret, int count); 2590 int avcodec_thread_execute(AVCodecContext *s, int (*func)(AVCodecContext *c2, void *arg2),void **arg, int *ret, int count);
2520 int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void **arg, int *ret, int count); 2591 int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void **arg, int *ret, int count);
2521 //FIXME func typedef 2592 //FIXME func typedef
2522 2593
2523 /** 2594 /**
2524 * opens / inits the AVCodecContext. 2595 * Initializes the AVCodecContext to use the given AVCodec. Prior to using this
2525 * not thread save! 2596 * function the context has to be allocated.
2597 *
2598 * The functions avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(),
2599 * avcodec_find_decoder() and avcodec_find_encoder() provide an easy way for
2600 * retrieving a codec.
2601 *
2602 * @warning This function is not thread save!
2603 *
2604 * @code
2605 * codec = avcodec_find_decoder(CODEC_ID_H264);
2606 * if (!codec)
2607 * exit(1);
2608 *
2609 * context = avcodec_alloc_context();
2610 *
2611 * if (avcodec_open(context, codec) < 0)
2612 * exit(1);
2613 * @endcode
2614 *
2615 * @param avctx The context which will be setup to use the given codec.
2616 * @param codec The codec to use within the context.
2617 * @return Zero on success, a negative value on error.
2618 * @see avcodec_alloc_context, avcodec_find_decoder, avcodec_find_encoder
2526 */ 2619 */
2527 int avcodec_open(AVCodecContext *avctx, AVCodec *codec); 2620 int avcodec_open(AVCodecContext *avctx, AVCodec *codec);
2528 2621
2529 2622 /**
2623 * @deprecated Use avcodec_decode_audio2() instead.
2624 */
2530 attribute_deprecated int avcodec_decode_audio(AVCodecContext *avctx, int16_t *samples, 2625 attribute_deprecated int avcodec_decode_audio(AVCodecContext *avctx, int16_t *samples,
2531 int *frame_size_ptr, 2626 int *frame_size_ptr,
2532 uint8_t *buf, int buf_size); 2627 uint8_t *buf, int buf_size);
2533 /** 2628
2534 * Decode an audio frame. 2629 /**
2535 * 2630 * Decodes an audio frame from \p buf into \p samples.
2536 * @param avctx the codec context. 2631 * The avcodec_decode_audio2() function decodes a frame of audio from the input
2537 * @param samples output buffer, 16 byte aligned 2632 * buffer \p buf of size \p buf_size. To decode it, it makes use of the
2538 * @param frame_size_ptr the output buffer size in bytes (you MUST set this to the allocated size before calling avcodec_decode_audio2()), zero if no frame could be compressed 2633 * audiocodec which was coupled with \p avctx using avcodec_open(). The
2539 * @param buf input buffer, 16 byte aligned 2634 * resulting decoded frame is stored in output buffer \p samples. If no frame
2540 * @param buf_size the input buffer size 2635 * could be decompressed, \p frame_size_ptr is zero. Otherwise, it is the
2541 * @return 0 if successful, -1 if not. 2636 * decompressed frame size in \e bytes.
2637 *
2638 * @warning You \e must set \p frame_size_ptr to the allocated size of the
2639 * output buffer before calling avcodec_decode_audio2().
2640 *
2641 * @warning The input buffer must be \c FF_INPUT_BUFFER_PADDING_SIZE larger than
2642 * the actual read bytes because some optimized bitstream readers read 32 or 64
2643 * bits at once and could read over the end.
2644 *
2645 * @warning The end of the input buffer \p buf should be set to 0 to ensure that
2646 * no overreading happens for damaged MPEG streams.
2647 *
2648 * @note You might have to align the input buffer \p buf and output buffer \p
2649 * samples. The alignment requirements depend on the CPU: on some CPUs it isn't
2650 * necessary at all, on others it won't work at all if not aligned and on others
2651 * it will work but it will have an impact on performance. In practice, the
2652 * bitstream should have 4 byte alignment at minimum and all sample data should
2653 * be 16 byte aligned unless the CPU doesn't need it (AltiVec and SSE do). If
2654 * the linesize is not a multiple of 16 then there's no sense in aligning the
2655 * start of the buffer to 16.
2656 *
2657 * @param avctx The codec context.
2658 * @param[out] samples The output buffer.
2659 * @param[in,out] frame_size_ptr The output buffer size in bytes.
2660 * @param[in] buf The input buffer.
2661 * @param[in] buf_size The input buffer size in bytes.
2662 * @return On error a negative value is returned, otherwise the number of bytes
2663 * used or zero if no frame could be decompressed.
2542 */ 2664 */
2543 int avcodec_decode_audio2(AVCodecContext *avctx, int16_t *samples, 2665 int avcodec_decode_audio2(AVCodecContext *avctx, int16_t *samples,
2544 int *frame_size_ptr, 2666 int *frame_size_ptr,
2545 uint8_t *buf, int buf_size); 2667 uint8_t *buf, int buf_size);
2668
2669 /**
2670 * Decodes a video frame from \p buf into \p picture.
2671 * The avcodec_decode_video() function decodes a frame of video from the input
2672 * buffer \p buf of size \p buf_size. To decode it, it makes use of the
2673 * videocodec which was coupled with \p avctx using avcodec_open(). The
2674 * resulting decoded frame is stored in \p picture.
2675 *
2676 * @warning The input buffer must be \c FF_INPUT_BUFFER_PADDING_SIZE larger than
2677 * the actual read bytes because some optimized bitstream readers read 32 or 64
2678 * bits at once and could read over the end.
2679 *
2680 * @warning The end of the input buffer \p buf should be set to 0 to ensure that
2681 * no overreading happens for damaged MPEG streams.
2682 *
2683 * @note You might have to align the input buffer \p buf and output buffer \p
2684 * samples. The alignment requirements depend on the CPU: on some CPUs it isn't
2685 * necessary at all, on others it won't work at all if not aligned and on others
2686 * it will work but it will have an impact on performance. In practice, the
2687 * bitstream should have 4 byte alignment at minimum and all sample data should
2688 * be 16 byte aligned unless the CPU doesn't need it (AltiVec and SSE do). If
2689 * the linesize is not a multiple of 16 then there's no sense in aligning the
2690 * start of the buffer to 16.
2691 *
2692 * @param avctx The codec context.
2693 * @param[out] picture The AVFrame in which the decoded video frame will be stored.
2694 * @param[in] buf The input buffer.
2695 * @param[in] buf_size The size of the input buffer in bytes.
2696 * @param[in,out] got_picture_ptr Zero if no frame could be decompressed, otherwise, it is non zero.
2697 * @return On error a negative value is returned, otherwise the number of bytes
2698 * used or zero if no frame could be decompressed.
2699 */
2546 int avcodec_decode_video(AVCodecContext *avctx, AVFrame *picture, 2700 int avcodec_decode_video(AVCodecContext *avctx, AVFrame *picture,
2547 int *got_picture_ptr, 2701 int *got_picture_ptr,
2548 uint8_t *buf, int buf_size); 2702 uint8_t *buf, int buf_size);
2549 int avcodec_decode_subtitle(AVCodecContext *avctx, AVSubtitle *sub, 2703 int avcodec_decode_subtitle(AVCodecContext *avctx, AVSubtitle *sub,
2550 int *got_sub_ptr, 2704 int *got_sub_ptr,
2551 const uint8_t *buf, int buf_size); 2705 const uint8_t *buf, int buf_size);
2552 int avcodec_parse_frame(AVCodecContext *avctx, uint8_t **pdata, 2706 int avcodec_parse_frame(AVCodecContext *avctx, uint8_t **pdata,
2553 int *data_size_ptr, 2707 int *data_size_ptr,
2554 uint8_t *buf, int buf_size); 2708 uint8_t *buf, int buf_size);
2709
2710 /**
2711 * Encodes an audio frame from \p samples into \p buf.
2712 * The avcodec_encode_audio() function encodes a frame of audio from the input
2713 * buffer \p samples. To encode it, it makes use of the audiocodec which was
2714 * coupled with \p avctx using avcodec_open(). The resulting encoded frame is
2715 * stored in output buffer \p buf.
2716 *
2717 * @note The output buffer should be at least \c FF_MIN_BUFFER_SIZE bytes large.
2718 *
2719 * @param avctx The codec context.
2720 * @param[out] buf The output buffer.
2721 * @param[in] buf_size The output buffer size.
2722 * @param[in] samples The input buffer containing the samples.
2723 * @return On error a negative value is returned, on succes zero or the number
2724 * of bytes used from the input buffer.
2725 */
2555 int avcodec_encode_audio(AVCodecContext *avctx, uint8_t *buf, int buf_size, 2726 int avcodec_encode_audio(AVCodecContext *avctx, uint8_t *buf, int buf_size,
2556 const short *samples); 2727 const short *samples);
2728
2729 /**
2730 * Encodes a video frame from \p pict into \p buf.
2731 * The avcodec_encode_video() function encodes a frame of video from the input
2732 * \p pict. To encode it, it makes use of the videocodec which was coupled with
2733 * \p avctx using avcodec_open(). The resulting encoded bytes representing the
2734 * frame are stored in the output buffer \p buf. The input picture should be
2735 * stored using a specific format, namely \c avctx.pix_fmt.
2736 *
2737 * @param avctx The codec context.
2738 * @param[out] buf The output buffer for the bitstream of encoded frame.
2739 * @param[in] buf_size The size of the outputbuffer in bytes.
2740 * @param[in] pict The input picture to encode.
2741 * @return On error a negative value is returned, on success zero or the number
2742 * of bytes used from the input buffer.
2743 */
2557 int avcodec_encode_video(AVCodecContext *avctx, uint8_t *buf, int buf_size, 2744 int avcodec_encode_video(AVCodecContext *avctx, uint8_t *buf, int buf_size,
2558 const AVFrame *pict); 2745 const AVFrame *pict);
2559 int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size, 2746 int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size,
2560 const AVSubtitle *sub); 2747 const AVSubtitle *sub);
2561 2748