/*  
    This file is provided under a dual BSD/GPLv2 license.  When using or 
    redistributing this file, you may do so under either license.
    
    GPL LICENSE SUMMARY
    
    Copyright(c) 2007-2009 Intel Corporation. All rights reserved.
    
    This program is free software; you can redistribute it and/or modify 
    it under the terms of version 2 of the GNU General Public License as
    published by the Free Software Foundation.

    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 St - Fifth Floor, Boston, MA 02110-1301 USA.
    The full GNU General Public License is included in this distribution 
    in the file called LICENSE.GPL.

    Contact Information:

    BSD LICENSE 

    Copyright(c) 2007-2009 Intel Corporation. All rights reserved.
    All rights reserved.

    Redistribution and use in source and binary forms, with or without 
    modification, are permitted provided that the following conditions 
    are met:

    * Redistributions of source code must retain the above copyright 
    notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright 
    notice, this list of conditions and the following disclaimer in 
    the documentation and/or other materials provided with the 
    distribution.
    * Neither the name of Intel Corporation nor the names of its 
    contributors may be used to endorse or promote products derived 
    from this software without specific prior written permission.

    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*/
#ifndef VIDDEC_FW_COMMON_DEFS_H
#define VIDDEC_FW_COMMON_DEFS_H

#define VIDDEC_FW_PARSER_IPC_HOST_INT    0x87654321
#define EMITTER_WORKLOAD_ENTRIES    2048

/* This enum defines priority level for opening a stream */
enum viddec_stream_priority
{
    viddec_stream_priority_BACKGROUND, /* Lowest priority stream */
    viddec_stream_priority_REALTIME,   /* Real time highest priority stream */
    viddec_stream_priority_INVALID,
};

/* This enum defines supported flush types */
enum viddec_stream_flushtype
{
    VIDDEC_STREAM_FLUSH_DISCARD, /* Reinitialise to start state */
    VIDDEC_STREAM_FLUSH_PRESERVE, /* Reinitialise to start state  by preserving sequence info*/
};

enum viddec_stream_inband_flags
{
    VIDDEC_STREAM_DEFAULT_FLAG=0, /* Default value for flags */
    VIDDEC_STREAM_EOS,          /* End of stream message */
    VIDDEC_STREAM_DISCONTINUITY,  /* new segment which forces flush and preserve */
};

/* Message descriptor for Parser's Input and output queues. needs to be 8 byte aligned */
typedef struct viddec_input_buffer
{
    unsigned int             flags; /* Flags for Inband messages like EOS, valid range defined in viddec_stream_inband_flags */
    unsigned int             phys;/* DDR addr of where ES/WKLD is at. */
    unsigned int             len;/* size of buffer at phys_addr */
    unsigned int             id;/* A id for the buffer which is not used or modified by the FW. */
#ifdef HOST_ONLY
    unsigned char           *buf; /* virt pointer to buffer. This is a don't care for FW */
#endif
}ipc_msg_data;

typedef ipc_msg_data viddec_input_buffer_t;
typedef ipc_msg_data viddec_ipc_msg_data;

/* Return types for interface functions */
typedef enum
{
    VIDDEC_FW_SUCCESS, /* succesful with current operation */
    VIDDEC_FW_NORESOURCES, /* No resources to execute the requested functionality */
    VIDDEC_FW_FAILURE,    /* Failed for Uknown reason */
    VIDDEC_FW_INVALID_PARAM, /* The parameters that were passed are Invalid */
    VIDDEC_FW_PORT_FULL,     /* The operation failed since queue is full */
    VIDDEC_FW_PORT_EMPTY,   /* The operation failed since queue is empty */
    VIDDEC_FW_NEED_FREE_WKLD, /* The operation failed since a free wkld is not available */
}viddec_fw_return_types_t;

/* Defines for Interrupt mask and status */
typedef enum
{
    VIDDEC_FW_WKLD_DATA_AVAIL=1, /* A processed workload is available */
    VIDDEC_FW_INPUT_WATERMARK_REACHED=2,     /* The input path is below the set watermark for current stream */
}viddec_fw_parser_int_status_t;

/* Defines for attributes on stream, If not set explicitly will be default values */
typedef enum
{
    VIDDEC_FW_INPUT_Q_WATERMARK, /* Define for setting Input queue watermarks */
    VIDDEC_FW_STREAM_PRIORITY,    /* Define for setting stream priority */
}viddec_fw_stream_attributes_t;

typedef struct
{
    unsigned int input_q_space; /* Num of messages that can be written to input queue */
    unsigned int output_q_data; /* Num of messages in output queue */
    unsigned int workload_q_status; /* Number of free wklds available to parser */
}viddec_fw_q_status_t;

typedef struct
{
    unsigned int to_fw_q_space;     /* Num of messages that can be written to input queue */
    unsigned int from_fw_q_data;    /* Num of messages in output queue */
}viddec_fw_decoder_q_status_t;

enum viddec_fw_decoder_int_status
{
    VIDDEC_FW_DECODER_INT_STATUS_STREAM_0       = (1<< 0), /* Decoder Stream 0 Requires Service */
    VIDDEC_FW_DECODER_INT_STATUS_STREAM_1       = (1<< 1), /* Decoder Stream 1 Requires Service */
    VIDDEC_FW_DECODER_INT_STATUS_STREAM_2       = (1<< 2), /* Decoder Stream 2 Requires Service */


    VIDDEC_FW_DECODER_INT_STATUS_STREAM_HIGH    = (1<<30), /* Any Decoder Stream >= 30 Requires Service */
    VIDDEC_FW_DECODER_INT_STATUS_AUTO_API       = (1<<31)  /* An Auto-API Function has completed */
};

/** Hardware Accelerated stream formats */
enum viddec_stream_format
{
   MFD_STREAM_FORMAT_MPEG=1,
   MFD_STREAM_FORMAT_H264,
   MFD_STREAM_FORMAT_VC1,
   MFD_STREAM_FORMAT_MPEG42,

   MFD_STREAM_FORMAT_MAX,   /* must be last  */
   MFD_STREAM_FORMAT_INVALID
};

/* Workload specific error codes */
enum viddec_fw_workload_error_codes
{
    VIDDEC_FW_WORKLOAD_SUCCESS               = 0,
    VIDDEC_FW_WORKLOAD_ERR_NOTDECODABLE      = (1 << 0),/* Parser/Decoder detected a non decodable error with this workload */
    VIDDEC_FW_WORKLOAD_ERR_BUFFERS_OVERFLOW  = (1 << 1),/* Parser Detected more than 64 buffers between two start codes */
    VIDDEC_FW_WORKLOAD_ERR_ITEMS_OVERFLOW    = (1 << 2),/* Parser Detected overflow of currently allocated workload memory */
    VIDDEC_FW_WORKLOAD_ERR_FLUSHED_FRAME     = (1 << 3),/* This is impartial or empty frame which was flushed by Parser/Decoder */
    VIDDEC_FW_WORKLOAD_ERR_MISSING_DMEM      = (1 << 4),/* This is impartial or empty frame from Parser/Decoder */
    VIDDEC_FW_WORKLOAD_ERR_UNSUPPORTED       = (1 << 5),/* Parser Detected unsupported feature in the stream */
    /* First 8 bits reserved for Non Decodable errors */
    VIDDEC_FW_WORKLOAD_ERR_CONCEALED         = (1 << 9),/* The decoder concealed some errors in this frame */ 
    VIDDEC_FW_WORKLOAD_ERR_MISSING_REFERENCE = (1 << 10),/* Deocder/parser detected at least one of the required reference frames is missing */
    VIDDEC_FW_WORKLOAD_ERR_IN_REFERENCE      = (1 << 11),/* Deocder/parser detected at least one of the reference frames has errors in it */
    VIDDEC_FW_WORKLOAD_ERR_DANGLING_FLD      = (1 << 12),/* Parser detected at least one of the fields are missing */
    VIDDEC_FW_WORKLOAD_ERR_PARTIAL_SLICE     = (1 << 13),/* Deocder detected at least one of the fields are missing */
    VIDDEC_FW_WORKLOAD_ERR_MACROBLOCK        = (1 << 14),/* Deocder detected macroblock errors */
    VIDDEC_FW_WORKLOAD_ERR_MISSING_SEQ_INFO  = (1 << 16),/* Parser detected sequence information is missing */

    VIDDEC_FW_WORKLOAD_ERR_TOPFIELD          = (1 << 17),/* Decoder/Parser detected  errors in "top field" or "frame"*/
    VIDDEC_FW_WORKLOAD_ERR_BOTTOMFIELD       = (1 << 18),/* Decoder/Parser detected  errors in "bottom field" or "frame" */
    VIDDEC_FW_WORKLOAD_ERR_BITSTREAM_ERROR   = (1 << 19),/* Parser detected errors */
	 
};

enum viddec_fw_mpeg2_error_codes
{
    VIDDEC_FW_MPEG2_ERR_CORRUPTED_SEQ_HDR       = (1 << 24),/* Parser detected corruption in sequence header. Will use the previous good sequence info, if found. */
    VIDDEC_FW_MPEG2_ERR_CORRUPTED_SEQ_EXT       = (1 << 25),/* Parser detected corruption in seqeunce extension. */
    VIDDEC_FW_MPEG2_ERR_CORRUPTED_SEQ_DISP_EXT  = (1 << 26),/* Parser detected corruption in sequence display extension. */
    VIDDEC_FW_MPEG2_ERR_CORRUPTED_GOP_HDR       = (1 << 27),/* Parser detected corruption in GOP header. */
    VIDDEC_FW_MPEG2_ERR_CORRUPTED_PIC_HDR       = (1 << 26),/* Parser detected corruption in picture header. */
    VIDDEC_FW_MPEG2_ERR_CORRUPTED_PIC_COD_EXT   = (1 << 27),/* Parser detected corruption in picture coding extension. */
    VIDDEC_FW_MPEG2_ERR_CORRUPTED_PIC_DISP_EXT  = (1 << 28),/* Parser detected corruption in picture display extension. */
    VIDDEC_FW_MPEG2_ERR_CORRUPTED_QMAT_EXT      = (1 << 29),/* Parser detected corruption in quantization matrix extension. */
};

#endif
