1    /* 
     2     * Copyright (c) 2010, Texas Instruments Incorporated
     3     * All rights reserved.
     4     *
     5     * Redistribution and use in source and binary forms, with or without
     6     * modification, are permitted provided that the following conditions
     7     * are met:
     8     *
     9     * *  Redistributions of source code must retain the above copyright
    10     *    notice, this list of conditions and the following disclaimer.
    11     *
    12     * *  Redistributions in binary form must reproduce the above copyright
    13     *    notice, this list of conditions and the following disclaimer in the
    14     *    documentation and/or other materials provided with the distribution.
    15     *
    16     * *  Neither the name of Texas Instruments Incorporated nor the names of
    17     *    its contributors may be used to endorse or promote products derived
    18     *    from this software without specific prior written permission.
    19     *
    20     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    21     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
    22     * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    23     * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
    24     * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
    25     * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    26     * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
    27     * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
    28     * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
    29     * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    30     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    31     * 
    32     */
    33    /*!
    34     *  ======== IVIDENC ========
    35     *  IVIDENC-compliant video encoder interface
    36     *
    37     *  All IVIDENC-compliant video encoder modules must implement this
    38     *  interface.
    39     */
    40    metaonly interface IVIDENC inherits ti.sdo.ce.ICodec
    41    {
    42        override config String serverFxns = "VIDENC_SKEL";
    43        override config String stubFxns = "VIDENC_STUBS";
    44    
    45        override readonly config Int rpcProtocolVersion = 3;
    46    
    47        override readonly config Bool codecClassConfigurable = true;
    48    
    49        /*!
    50         *  ======== manageInBufsCache =======
    51         *  Codec Class configuration param
    52         *
    53         *  Determines whether cache will be managed on the DSP for each of the
    54         *  (up to 16) input buffers given to the codec's "process()" call.
    55         *
    56         *  If this flag is set to "false" for one or more
    57         *  elements, the cache for the corresponding input buffer will not be
    58         *  invalidated before the process() call. Skipping unnecessary cache
    59         *  invalidation improves performance, especially if a buffer is large.
    60         *
    61         *  (If element "i" in this array is set to true, cache for inBufs[i] will
    62         *  be invalidated only if the buffer is supplied, of course.)
    63         *
    64         *  For example, if you know that a particular codec of this class always
    65         *  reads the data from its inBufs[1] buffer only via DMA, you can set
    66         *  manageInBufsCache[1] = false;
    67         */
    68        config Bool manageInBufsCache[ 16 ] = [
    69            true, true, true, true, true, true, true, true,
    70            true, true, true, true, true, true, true, true,
    71        ];
    72    
    73        /*!
    74         *  ======== manageOutBufsCache =======
    75         *  Codec Class configuration param
    76         *
    77         *  Determines whether cache will be managed on the DSP for each of the
    78         *  (up to 16) output buffers given to the codec's "process()" call.
    79         *
    80         *  If this flag is set to "false" for one or more
    81         *  elements, the cache for the corresponding output buffer will not be
    82         *  invalidated before the process() call nor flushed after the process()
    83         *  call. Skipping unnecessary cache invalidation and flushing improves
    84         *  performance.
    85         *
    86         *  For example, if you know that a particular codec of this class always
    87         *  writes the data to its outBufs[2] buffer only via DMA, you can set
    88         *  manageOutBufsCache[2] = false;
    89         */
    90        config Bool manageOutBufsCache[ 16 ] = [
    91            true, true, true, true, true, true, true, true,
    92            true, true, true, true, true, true, true, true,
    93        ];
    94    
    95        /*!
    96         *  ======== manageReconBufsCache =======
    97         *  Codec Class configuration param
    98         *
    99         *  Determines whether cache will be managed on the DSP for each of the
   100         *  (up to 16) reconstruction buffers given to the codec's "process()" call.
   101         *
   102         *  If this flag is set to "false" for one or more
   103         *  elements, the cache for the corresponding recon buffer will not be
   104         *  flushed after the process() call. Skipping unnecessary cache
   105         *  flushing improves performance.
   106         *
   107         *  If you are uninterested in the recon buffers, specify this setting in
   108         *  your configuration file:
   109         *      <your video encoder codec symbol>.manageReconBufsCache[ 16 ] = [
   110         *          false, false, false, false, false, false, false, false,
   111         *          false, false, false, false, false, false, false, false,
   112         *      ];
   113        ];
   114         */
   115        config Bool manageReconBufsCache[ 16 ] = [
   116            true, true, true, true, true, true, true, true,
   117            true, true, true, true, true, true, true, true,
   118        ];
   119    }
   120    /*
   121     *  @(#) ti.sdo.ce.video; 1, 0, 3,405; 9-20-2010 16:43:15; /db/atree/library/trees/ce/ce-r09x/src/ xlibrary
   122    
   123     */
   124