media/libvpx/vp8/encoder/lookahead.h

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /*
     2  *  Copyright (c) 2011 The WebM project authors. All Rights Reserved.
     3  *
     4  *  Use of this source code is governed by a BSD-style license
     5  *  that can be found in the LICENSE file in the root of the source
     6  *  tree. An additional intellectual property rights grant can be found
     7  *  in the file PATENTS.  All contributing project authors may
     8  *  be found in the AUTHORS file in the root of the source tree.
     9  */
    10 #ifndef LOOKAHEAD_H
    11 #define LOOKAHEAD_H
    12 #include "vpx_scale/yv12config.h"
    13 #include "vpx/vpx_integer.h"
    15 struct lookahead_entry
    16 {
    17     YV12_BUFFER_CONFIG  img;
    18     int64_t             ts_start;
    19     int64_t             ts_end;
    20     unsigned int        flags;
    21 };
    24 struct lookahead_ctx;
    26 /**\brief Initializes the lookahead stage
    27  *
    28  * The lookahead stage is a queue of frame buffers on which some analysis
    29  * may be done when buffers are enqueued.
    30  *
    31  *
    32  */
    33 struct lookahead_ctx* vp8_lookahead_init(unsigned int width,
    34                                          unsigned int height,
    35                                          unsigned int depth
    36                                          );
    39 /**\brief Destroys the lookahead stage
    40  *
    41  */
    42 void vp8_lookahead_destroy(struct lookahead_ctx *ctx);
    45 /**\brief Enqueue a source buffer
    46  *
    47  * This function will copy the source image into a new framebuffer with
    48  * the expected stride/border.
    49  *
    50  * If active_map is non-NULL and there is only one frame in the queue, then copy
    51  * only active macroblocks.
    52  *
    53  * \param[in] ctx         Pointer to the lookahead context
    54  * \param[in] src         Pointer to the image to enqueue
    55  * \param[in] ts_start    Timestamp for the start of this frame
    56  * \param[in] ts_end      Timestamp for the end of this frame
    57  * \param[in] flags       Flags set on this frame
    58  * \param[in] active_map  Map that specifies which macroblock is active
    59  */
    60 int
    61 vp8_lookahead_push(struct lookahead_ctx *ctx,
    62                    YV12_BUFFER_CONFIG   *src,
    63                    int64_t               ts_start,
    64                    int64_t               ts_end,
    65                    unsigned int          flags,
    66                    unsigned char        *active_map);
    69 /**\brief Get the next source buffer to encode
    70  *
    71  *
    72  * \param[in] ctx       Pointer to the lookahead context
    73  * \param[in] drain     Flag indicating the buffer should be drained
    74  *                      (return a buffer regardless of the current queue depth)
    75  *
    76  * \retval NULL, if drain set and queue is empty
    77  * \retval NULL, if drain not set and queue not of the configured depth
    78  *
    79  */
    80 struct lookahead_entry*
    81 vp8_lookahead_pop(struct lookahead_ctx *ctx,
    82                   int                   drain);
    85 #define PEEK_FORWARD   1
    86 #define PEEK_BACKWARD -1
    87 /**\brief Get a future source buffer to encode
    88  *
    89  * \param[in] ctx       Pointer to the lookahead context
    90  * \param[in] index     Index of the frame to be returned, 0 == next frame
    91  *
    92  * \retval NULL, if no buffer exists at the specified index
    93  *
    94  */
    95 struct lookahead_entry*
    96 vp8_lookahead_peek(struct lookahead_ctx *ctx,
    97                    unsigned int          index,
    98                    int                   direction);
   101 /**\brief Get the number of frames currently in the lookahead queue
   102  *
   103  * \param[in] ctx       Pointer to the lookahead context
   104  */
   105 unsigned int
   106 vp8_lookahead_depth(struct lookahead_ctx *ctx);
   109 #endif

mercurial