RGBN-VIDEO-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, enterprises, Unsigned32, IpAddress,
    Gauge32
        FROM SNMPv2-SMI
    TEXTUAL-CONVENTION, RowStatus, TruthValue, MacAddress
        FROM SNMPv2-TC
    RgbnOperState, RgbnString
        FROM RGBN-BASE-MIB;

rgbnVideoMIB MODULE-IDENTITY
    LAST-UPDATED    "200912090000Z" -- 9-dec-2009, midnight
    ORGANIZATION    "RGB Networks"
    CONTACT-INFO    "Postal:
                        RGB Networks Inc
                        390 West Java Drive
                        Sunnyvale, CA 94089

                    WEB:
                        http://www.rgbnetworks.com

                    Email:
                        info@rgbnetworks.com
                    "
    DESCRIPTION
        "Configuration and limited monitoring of Video input and
        output streams, and grooming.

        Copyright (C) RGB Networks."

    -- revision descriptions in reverse chronological order
    REVISION        "200912090000Z" -- 9-dec-2009, midnight
    DESCRIPTION
        "The added additional transcoding objects:
        rgbnVideoOutProgTcHresType, rgbnVideoOutProgTcVresType,
        rgbnVideoOutProgTcHresActual, rgbnVideoOutProgTcVresActual,
        rgbnVideoOutProgTcHresSource, and rgbnVideoOutProgTcVresSource."

    REVISION        "200910300000Z" -- 30-oct-2009, midnight
    DESCRIPTION
        "The object rgbnVideoOutTsBitrateThreshold was changed from
        an actual value to a percentage."

    REVISION        "200909250000Z" -- 25-sep-2009, midnight
    DESCRIPTION
        "Updates for supporting transcoding:
         1) added object rgbnVideoOutTsTransCodeEna to the outTS table
         2) added the following objects to the outProg table:
            rgbnVideoOutProgTcFormat, rgbnVideoOutProgTcResolClass,
            rgbnVideoOutProgTcGopStructType, rgbnVideoOutProgTcGopMval,
            rgbnVideoOutProgTcGopNval, rgbnVideoOutProgTcIdrIntv,
            rgbnVideoOutProgTcBitRateMax, rgbnVideoOutProgTcMctfEna,
            rgbnVideoOutProgTcTelecineProc,
            rgbnVideoOutProgTcClosedCapType"

    REVISION        "200909030000Z" -- 3-sep-2009, midnight
    DESCRIPTION
        "Minor updates:
         1) updated PID range and DESCRIPTION for object
            rgbnVideoOutTsNitPid
         2) remove product names"

    REVISION        "200908210000Z" -- 21-aug-2009, midnight
    DESCRIPTION
        "Additions for backup programs:
         1) Added the following objects to the input program table:
            rgbnVideoInProgBkupUse, rgbnVideoInProgInTsIndex,
            rgbnVideoInProgInProgIndex, rgbnVideoInProgRecType.
         2) Updated the value of object rgbnVideoGrmSchedState
         3) Updated the DESCRIPTION of object rgbnVideoGrmBkupUse
         4) Updated the DESCRIPTION of object rgbnVideoOutProgProgSub"

    REVISION        "200908200000Z" -- 20-aug-2009, midnight
    DESCRIPTION
        "Minor updates:
         1) Changed objects rgbnVideoOutEsPmtOrder to allow being
            specified on row create, but read-only afterwards
            rgbnVideoOutEsPmtOrder to read-only
         2) Added object rgbnVideoGrmMakeUnref, which is used to
            make an output program a 'ghost' program."

    REVISION        "200908190000Z" -- 19-aug-2009, midnight
    DESCRIPTION
        "Minor updates:
         1) Changed objects rgbnVideoInEsPmtOrder and
            rgbnVideoOutEsPmtOrder to read-only
         2) Added object rgbnVideoOutProgSetPmtOrder to
            change the PMT order."

    REVISION        "200908120000Z" -- 12-aug-2009, midnight
    DESCRIPTION
        "Updated to support the following features:
        A) DVB
           1) modified TC RgbnTsStreamType to add value dvb
           2) added TC RgbnDvbNetId
           3) added DVB attributes for outTS - rgbnVideoOutTsDvbNetId,
                rgbnVideoOutTsDvbOrigNetId, rgbnVideoOutTsDvbModMode,
                rgbnVideoOutTsDvbNitSrc, rgbnVideoOutTsDvbTdtTotSrc,
                rgbnVideoOutTsDvbStdSrc, and rgbnVideoOutTsDvbEitSrc
           4) added attributes for inTS
                rgbnVideoInTsEnaDvbTabProc & rgbnVideoInTsEnaAtscTabProc
           5) added object group rgbnVideoDvbLocalTot to support
                DVB TOT, and contains attributes:
                rgbnVideoDvbTotCountryCodeAlpha3,
                rgbnVideoDvbTotCountryRegionId, rgbnVideoDvbTotDstOffset,
                rgbnVideoDvbTotDstStartSun, rgbnVideoDvbTotDstStartMonth,
                rgbnVideoDvbTotDstStartHour, rgbnVideoDvbTotDstStartMin,
                rgbnVideoDvbTotDstEndSun, rgbnVideoDvbTotDstEndMonth,
                rgbnVideoDvbTotDstEndHour, and rgbnVideoDvbTotDstEndMin
        B) pre-provisioning input programs
           1) updated DESCRIPTION of rgbnVideoInProgNo and TC
              RgbnProgNo
        C) pre-provisioning input ESs
           1) updated DESCRIPTION of rgbnVideoInEsTable
           2) updated DESCRIPTION of rgbnVideoInEsEntry
           3) added object rgbnVideoInEsRowStatus
           4) changed access of the following objects from
              read-only to read-create: rgbnVideoInEsType,
              rgbnVideoInEsStreamType, rgbnVideoInEsPid, and
              rgbnVideoInEsPmtOrder
           5) updated description of rgbnVideoInEsPmtOrder
           6) added objects rgbnVideoInEsMgmtCre,
              rgbnVideoInEsLang, and rgbnVideoInEsStreamSubType
        D) pre-provisioning output ESs
           1) updated DESCRIPTION of rgbnVideoOutEsTable
           2) updated DESCRIPTION of rgbnVideoOutEsEntry
           3) added object rgbnVideoOutEsRowStatus
           4) changed access of the following objects from
              read-only to read-create: rgbnVideoOutEsType,
              rgbnVideoOutEsStreamType, rgbnVideoOutEsPid, and
              rgbnVideoOutEsPmtOrder
           5) updated description of rgbnVideoOutEsPmtOrder
           6) added objects rgbnVideoOutEsMgmtCre,
              rgbnVideoOutEsLang, and rgbnVideoOutEsStreamSubType
        E) backup program for grooming
           1) updated enum values for rgbnVideoGrmSchedState
           2) added object rgbnVideoGrmBkupUse
           3) added object rgbnVideoGrmBkupInTsIndex
           4) added TC RgbnProgIndexOrZero
           5) added object rgbnVideoGrmBkupInProgIndex,
           6) added commented out object rgbnVideoGrmBkupEsExclude
           7) added object rgbnVideoGrmBkupRecType
        F) mixed mode support
           1) Added the following objects to the output TS table:
              rgbnVideoOutTsUseLargeBufs, rgbnVideoOutTsUseOnlySpts,
              and rgbnVideoOutTsBitrateThreshold
        G) applied clarifications, which resulted in:
           1) update of values for TC RgbnSiTableType
           2) update of DESCRIPTION for rgbnVideoInProgName
           3) update of values for TC RgbnEsStreamType
           4) update of DESCRIPTION for rgbnVideoOutTsBitrate
           5) update of values for rgbnVideoGrmRateShapeType
           6) update of value and DESCRIPTION for rgbnVideoGrmEsExclude,
              and added TC EsExcludeList
           7) update of the SYNTAX for rgbnVideoGrmEsExclude
           8) added defval to rgbnVideoGrmEsExclude
           9) update of values for RgbnTsStreamType
           10) updated of labels for enum value of 
               rgbnVideoGrmRateShapeType
           11) update of DESCRIPTION for rgbnVideoOutProgNo
           12) added TC RgbnEsStreamSubType
        "

    REVISION        "200905180000Z" -- 18-may-2009, midnight
    DESCRIPTION
        "Initial version of the MIB module"
    ::= { enterprises rgbnetworks(19601) rgbnG2Modules(3) 6 }

-- Top level OID branches
rgbnVideoNotifications OBJECT IDENTIFIER ::= { rgbnVideoMIB 0 }
rgbnVideoObjects OBJECT IDENTIFIER ::= { rgbnVideoMIB 1 }
rgbnVideoConformance OBJECT IDENTIFIER ::= { rgbnVideoMIB 2 }
    rgbnVideoCompliances OBJECT IDENTIFIER ::= { rgbnVideoConformance 1 }
    rgbnVideoGroups OBJECT IDENTIFIER ::= { rgbnVideoConformance 2 }

-- textual conventions
RgbnMpegPid ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS current
    DESCRIPTION
        "A packet identifier (PID) value. The valid range
         is 0 to 8191 (which is a 13-bit field). A value of 65535
         indicates that either the PID is invalid or does not exist."
    SYNTAX Unsigned32 (0..8191 | 65535)

RgbnTsIndex ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS current
    DESCRIPTION
        "The index of an input or output transport stream (TS).
        The maximum value is implementation dependent. Also, it
        is implementation dependent as to whether or not the
        tables that use the index are packed or sparse."
    SYNTAX Unsigned32(1..4294967295)

RgbnTsIndexOrZero ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS current
    DESCRIPTION
        "The index of an input or output transport stream (TS)
        or the value zero to indicate 'no index'. The value
        is a extension of RgbnTsIndex with the value zero."
    SYNTAX Unsigned32(0..4294967295)

RgbnTsStreamType ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "The transport stream (TS) stream type. Each type as an associated
        set of system information (SI) tables, and possibly associated
        objects. The values are:
            mpeg2(1)
            dvb(2)
            atsc(3)
            scte(4)"
    SYNTAX INTEGER {
                mpeg2(1),
                dvb(2),
                atsc(3),
                scte(4)
                }

RgbnProgIndex ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS current
    DESCRIPTION
        "The index of an input or output program (Prog).
        The maximum value is implementation dependent. Also, it
        is implementation dependent as to whether or not the
        tables that use the index are packed or sparse."
    SYNTAX Unsigned32(1..4294967295)

RgbnProgIndexOrZero ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS current
    DESCRIPTION
        "The index of an input or output program (Prog)
        or the value zero to indicate 'no index'. The value
        is a extension of RgbnProgIndex with the value zero."
    SYNTAX Unsigned32(0..4294967295)

RgbnProgNo ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS current
    DESCRIPTION
        "The number of an input or output program (ProgNo).
        The maximum value is implementation dependent. Also, it
        is implementation dependent as to whether or not the
        tables that use the index are packed or sparse.
        The value of a ProgNo is encoded in a 16-bit field
        in the PAT, and thus the range is from 0 to 65535.
        However, the value zero is reserved. Also, values
        greater than 65535 are used for artificial (called
        'dummy' or 'ghost') programs created by management
        operations."
    SYNTAX Unsigned32(1..4294967295)

RgbnEsIndex ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS  current
    DESCRIPTION
        "The index of an elementary stream (ES). The maximum
        value is implementation dependent.  Also, it is
        implementation dependent as to whether or not the
        tables that use the index are packed or sparse."
    SYNTAX Unsigned32(1..4294967295)

RgbnEsType ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "The type of the ES. The values are:
            video(1) - mpeg2Video, h264Video, scteVideo, mpeg1Video
            audio(2) - ac3Audio, aacAudio, mpeg1Audio, mpeg2Audio,
                         dvbAc3Audio
            other(3) - other such as data"
    SYNTAX INTEGER {
                video(1),
                audio(2),
                other(3)
                }

RgbnEsStreamType ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "The type of the ES stream."
    SYNTAX INTEGER {
                mpeg1Video(1), -- '01'H
                mpeg2Video(2), -- '02'H
                h264Video(27), -- '1B'H
                scteVideo(128), -- '80'H
                ac3Audio(129), -- '81'H
                aacAudio(15), -- '0F'H
                mpeg1Audio(3), -- '03'H
                mpeg2Audio(4), -- '04'H
                dvbAc3Audio(6), -- '06'H
                scteSubtitle(130) -- '82'H
                }

RgbnEsStreamSubType ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "The sub-type of the ES stream."
    SYNTAX INTEGER {
                none(1),
                teletext(2),
                subtitle(3)
                }

RgbnPidList ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "2d,"
    STATUS current
    DESCRIPTION
        "Specifies a list of PID values. If the value is
        a zero length string, then the list is empty. Otherwise,
        the first two octets are a 16-bit value in big-endian encoding
        that specify the number of PIDs in the octet string. The value
        ranges between 1 and 32 inclusive. The remainder of the string
        consists of 16-bit PID values specified in big-endian encoding."
    SYNTAX OCTET STRING(SIZE(0..66))

RgbnGrmIndex ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS current
    DESCRIPTION
        "The index of a grooming session. The maximum
        value is implementation dependent.  Also, it is
        implementation dependent as to whether or not the
        tables that use the index are packed or sparse."
    SYNTAX Unsigned32(1..4294967295)

RgbnGrmIndexOrZero ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS current
    DESCRIPTION
        "The index of a grooming session or the value zero to
        indicate 'no index'. The value is a extension of
        RgbnGrmIndex with the value zero."
    SYNTAX Unsigned32(0..4294967295)

RgbnTsId ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS current
    DESCRIPTION
        "A transport stream identifier (TSID). A valid TSID
        has values that range from 0 to 65535 (16 bits).
        If a TSID is not valid, then the value is 4294967295
        (that is, all bits set)."
    SYNTAX Unsigned32(0..65535 | 4294967295)

RgbnDvbNetId ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS current
    DESCRIPTION
        "A DVB network ID (NETID).
        DVB network is a collection of MPEG-2 transport stream multiplexes
        transmitted on a single delivery system, e.g. all digital channels
        on a specific cable system. The network id uniquely identifies the
        network/delivery system. A valid NETID
        has values that range from 0 to 65535 (16 bits).
        Note that the value zero is reserved, and the
        values 'ff01'h to 'ffff'h (65281 to 65535) are
        for temporary private use."
    REFERENCE
        "The assignments of network IDs are found in
        ETSI TS 101 162, and on the WEB at
        http://www.dvbservices.com/identifiers/network_id"
    SYNTAX Unsigned32(0..65535)

RgbnSiTabIndex ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS current
    DESCRIPTION
        "The index of a system information (SI) table. The maximum
        value is implementation dependent.  Also, it is
        implementation dependent as to whether or not the
        tables that use the index are packed or sparse."
    SYNTAX Unsigned32(1..4294967295)

RgbnSiTableType ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "The type of the system information table. The values are:
        pat('00'H) - Program Association Table; in MPEG streams
        pmt('02'H) - Program Map Table; in MPEG streams
        nitAct('40'H) - Network Information Table Actual; in DVB streams
        sdtAct('42'H) - Service Description Table Actual; in DVB streams
        dvbEitPfAct('4E'H) - Event Information Table Actual
                                        Present/Following; in DVB streams
        tdt('70'H) - Time and Date Table; in DVB streams
        tot('73'H) - Time Offset Table; in DVB streams
        mgt('C7'H) - Master Guide Table; in ATSC streams (ATSC A/65)
        tvct('C8'H) - Terrestrial Virtual Channel Table;
                                                in ATSC streams (ATSC A/65)
        cvct('C9'H) - Cable Virtual Channel Table; in SCTE streams (ATSC A/65)
        rrt('CA'H) - Rating Region Table; in ATSC streams (ATSC A/65)
        atscEit('CB'H) - Event Information Table; in ATSC streams (ATSC A/65)
        ett('CC'H) - Extended Text Table; in ATSC streams (ATSC A/65)
        stt('CD'H) - System Time Table; in ATSC streams (ATSC A/65)
        cuei('FC'H) - TODO: need help"
    SYNTAX INTEGER {
                pat(0), -- '00'H
                pmt(2), -- '02'H
                nitAct(64), -- '40'H
                sdtAct(66), -- '42'H
                dvbEitPfAct(78), -- '4E'H
                tdt(112), -- '70'H
                tot(115), -- '73'H
                mgt(199), -- 'C7'H
                tvct(200), -- 'C8'H
                cvct(201), -- 'C9'H
                rrt(202), -- 'CA'H
                atscEit(203), -- 'CB'H
                ett(204), -- 'CC'H
                stt(205), -- 'CD'H
                cuei(252) -- 'FC'H
                }

RgbnEsIndexList ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "4d,"
    STATUS current
    DESCRIPTION
        "Specifies a list of ES index values. If the value is
        a zero length string, then the list is empty. Otherwise,
        the first 4 octets are a 32-bit value in big-endian encoding
        that specify the number of ESs in the octet string. The value
        ranges between 1 and 32 inclusive. The remainder of the string
        consists of 32-bit ES index values specified in big-endian encoding."
    SYNTAX OCTET STRING(SIZE(0..132))

-- +++++++++++++++++++++++++++++++++++++++++++

rgbnVideoIndexHintTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RgbnVideoIndexHintEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of hints for an index of a non-existing row in
        An identified table. The number of entries is number
        of tables supporting index hints. "
    ::= { rgbnVideoObjects 1 }

rgbnVideoIndexHintEntry OBJECT-TYPE
    SYNTAX      RgbnVideoIndexHintEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A row in index hint table. No row creation or deletion
        can be done via SNMP operations on this table."
    INDEX { rgbnVideoIndexHintType }
    ::= { rgbnVideoIndexHintTable 1 }

RgbnVideoIndexHintEntry::= SEQUENCE {
    rgbnVideoIndexHintType   INTEGER,
    rgbnVideoIndexHintValue  Unsigned32
    }

rgbnVideoIndexHintType OBJECT-TYPE
    SYNTAX      INTEGER {
                    inTs(1),
                    inProg(2),
                    outTs(3),
                    outProg(4),
                    grm(5),
                    inEs(6),
                    outEs(7),
                    mbrTs(512)
                    }
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index of the index hint, which is the index hint type.
        The values are:
            inTs(1)    - hint for rgbnVideoInTsIndex
            inProg(2)  - hint for rgbnVideoInProgIndex
            outTs(3)   - hint for rgbnVideoOutTsIndex
            outProg(4) - hint for rgbnVideoOutProgIndex
            grm(5)     - hint for rgbnVideoGrmIndex
            inEs(6)    - hint for rgbnVideoInEsIndex
            outEs(7)   - hint for rgbnVideoOutEsIndex
            mbrTs(512) - hint for rgbnVideoOutTsMbrTsId"
    ::= { rgbnVideoIndexHintEntry 1 }

rgbnVideoIndexHintValue  OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A hint for the index of a non-existing row in table
        indexed by the instance type. If all index values are
        in use, then the value is 0. Each time the value is
        retrieved, if possible, a different value should be
        returned. There is no guarantee that when the row is
        to be created with a retrieved value that the row
        will not already exist. Note that the tables indexed
        by rgbnVideoInProgIndex and rgbnVideoOutProgIndex are
        also indexed by a TS index. For them, the value returned
        should be unique regardless of the TS index value."
    ::= { rgbnVideoIndexHintEntry 2 }

-- +++++++++++++++++++++++++++++++++++++++++++

rgbnVideoInTsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RgbnVideoInTsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of input transport streams (inTS). The number
        of entries is configuration dependent, and the maximum
        number of entries is implementation dependent."
    ::= { rgbnVideoObjects 2 }

rgbnVideoInTsEntry OBJECT-TYPE
    SYNTAX      RgbnVideoInTsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A row in the input transport stream (inTS) table. Row creation
        and deletion is supported via SNMP operations via object
        rgbnVideoInTsRowStatus. Only the 'createAndGo' and 'destroy'
        operations are supported."
    INDEX { rgbnVideoInTsIndex }
    ::= { rgbnVideoInTsTable 1 }

RgbnVideoInTsEntry ::= SEQUENCE {
    rgbnVideoInTsIndex          RgbnTsIndex,
    rgbnVideoInTsRowStatus      RowStatus,
    rgbnVideoInTsIfIndex        Unsigned32,
    rgbnVideoInTsIpAddr         IpAddress,
    rgbnVideoInTsUdpPort        Unsigned32,
    rgbnVideoInTsStreamType     RgbnTsStreamType,
    rgbnVideoInTsName           RgbnString,
    rgbnVideoInTsProcFec        TruthValue,
    rgbnVideoInTsOperState      RgbnOperState,
    rgbnVideoInTsOperDownReason INTEGER,
    rgbnVideoInTsProgCnt        Gauge32,
    rgbnVideoInTsTsId           RgbnTsId,
    rgbnVideoInTsNitPid         RgbnMpegPid,
    rgbnVideoInTsBitrate        Gauge32,
    rgbnVideoInTsSiTableCnt     Gauge32,
    rgbnVideoInTsActCfgSrcIp    IpAddress,
    rgbnVideoInTsEnaDvbTabProc  TruthValue,
    rgbnVideoInTsEnaAtscTabProc TruthValue
    }

rgbnVideoInTsIndex OBJECT-TYPE
    SYNTAX      RgbnTsIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index of the inTS. The value is also an index for tables
        defined in MIB module SCTE-HMS-MPEG-MIB, such as table
        mpegInputTSTable indexed by object mpegInputTSIndex."
    ::= { rgbnVideoInTsEntry 1 }

rgbnVideoInTsRowStatus OBJECT-TYPE
    SYNTAX      RowStatus { active(1), createAndGo(4), destroy(6) }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The status of the row. Only 'one-shot creation' is allowed."
    ::= { rgbnVideoInTsEntry 2 }

rgbnVideoInTsIfIndex OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The interface identifier on which the inTS is to be received.
        The triple of objects (rgbnVideoInTsIfIndex, rgbnVideoInTsIpAddr,
        rgbnVideoInTsUdpPort) is an alternate index of the row. Thus,
        the combination of the values must be unique."
    ::= { rgbnVideoInTsEntry 3 }

rgbnVideoInTsIpAddr OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The destination IP address in packets in the inTS. If the
        address is a unicast address, then the address must match the
        IP address configured for the interface. The triple of
        objects (rgbnVideoInTsIfIndex, rgbnVideoInTsIpAddr,
        rgbnVideoInTsUdpPort) is an alternate index of the
        row. Thus, the combination of the values must be unique."
    ::= { rgbnVideoInTsEntry 4 }

rgbnVideoInTsUdpPort OBJECT-TYPE
    SYNTAX      Unsigned32(0..65535)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The destination UDP port in packets in the inTS.
        The triple of objects (rgbnVideoInTsIfIndex, rgbnVideoInTsIpAddr,
        rgbnVideoInTsUdpPort) is an alternate index of the row. Thus,
        the combination of the values must be unique."
    ::= { rgbnVideoInTsEntry 5 }

rgbnVideoInTsStreamType OBJECT-TYPE
    SYNTAX      RgbnTsStreamType
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The inTS stream type. This determines which SI tables
        should be present."
    ::= { rgbnVideoInTsEntry 6 }

rgbnVideoInTsName OBJECT-TYPE
    SYNTAX      RgbnString
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The name of the inTs. The value is an alternate index for
        the row. When the value is set to a zero length string,
        a unique value is generated for the value. Otherwise when
        set, the value must be unique."
    DEFVAL { "" }
    ::= { rgbnVideoInTsEntry 7 }

rgbnVideoInTsProcFec OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates if FEC information in the inTS will be processed.
        When the inTs does not have FEC coding, then the value should
        be set to 'false(2)'. If set to 'true(1)', then the inTS
        will not be processed, and an event will be reported.
        When the inTS has FEC coding and the value is set to 'true(1)',
        then 4 additional UDP ports are used to receive packets in the
        inTS as specified in 'proMEPG-COP#3'. The ports are consecutive
        and immediately follow the value of object rgbnVideoInTsUdpPort.
        When the inTS has FEC coding and the value is set to 'false(2)',
        then only the packets in the inTS on the configured UDP port
        (as specified by the value of object rgbnVideoInTsUdpPort)
        are processed."
    DEFVAL { false }
    ::= { rgbnVideoInTsEntry 8 }

rgbnVideoInTsOperState OBJECT-TYPE
    SYNTAX      RgbnOperState
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The state of the inTS. The values are:
            up(1) - the inTS is active.
            down(2) - the inTS is not currently active
        The reason the inTS is down is specified by object
        rgbnVideoInTsOperDownReason."
    ::= { rgbnVideoInTsEntry 9 }

rgbnVideoInTsOperDownReason OBJECT-TYPE
    SYNTAX      INTEGER {
                    none(1)
                    -- Add down reasons here!
                    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "When the oper state of the inTS is 'down(2)', the reason why.
        The values are:
            none(1) - the inTS is up and not down
            -- Add down reasons here
        "
    ::= { rgbnVideoInTsEntry 10 }

rgbnVideoInTsProgCnt OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of programs in the inTS. This matches the number of
        entries in table rgbnVideoInProgTable for the inTS."
    ::= { rgbnVideoInTsEntry 11 }

rgbnVideoInTsTsId OBJECT-TYPE
    SYNTAX      RgbnTsId
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The transport stream identifier (TSID) of the inTS.
        Note that zero is a valid value."
    ::= { rgbnVideoInTsEntry 12 }

rgbnVideoInTsNitPid OBJECT-TYPE
    SYNTAX      RgbnMpegPid
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The PID for the network information table (NIT) packets."
    ::= { rgbnVideoInTsEntry 13 }

rgbnVideoInTsBitrate OBJECT-TYPE
    SYNTAX      Gauge32
    UNITS       "Kilo-bits per second (Kbps)"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The bitrate of the inTS in kilo-bits per second.
        Note that this object is consistent in units and
        what is counted as object rgbnVideoOutTsBitrate."
    ::= { rgbnVideoInTsEntry 14 }

rgbnVideoInTsSiTableCnt OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of service information (SI) tables in the inTS.
        This matches the number of entries in table rgbnVideoInTsSiTable
        for the inTS."
    ::= { rgbnVideoInTsEntry 15 }

rgbnVideoInTsActCfgSrcIp OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The configured source IP for packets in the inTS. If the
        value is 0.0.0.0, then packets can be from any source IP address.
        Otherwise, the IP address must be a unicast IP address. The value
        can only be set on row creation, and results in an entry being
        created in table rgbnVideoInTsSrcIpTable. If additional entries
        are added in table rgbnVideoInTsSrcIpTable, then the value of
        this object is the currently active source IP address.
        (See object rgbnVideoInTsSrcIpActive.)"
    DEFVAL { '00000000'h } -- IP address 0.0.0.0
    ::= { rgbnVideoInTsEntry 16 }

rgbnVideoInTsEnaDvbTabProc OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "DVB service information (SI) tables are transmitted in MPEG
        packets using reserved values for PIDs. However, these reserved
        values were not specified in Table 2-3 of early versions of
        document ISO/IEC 13818-1. Thus, transport streams could include
        video and audio elementary streams (ES) that use the PIDs
        reserved for transport of DVB SI tables. When an inTS is
        configured, the type of stream is discovered by processing
        the DVB SI and ATSC PSIP tables. When a video or audio ES
        uses a PID reserved for SI or PSIP table processing, it can
        overwhelm the processing. Thus, this object and object
        rgbnVideoInTsEnaAtscTabProc can be used to disable SI or
        PSIP table processing. The values are:
          true(1) - enable processing of DVB SI tables. Note, that
                    when enabled and the stream is not a DVB stream,
                    then no adverse condition will occur unless the
                    inTS contains an ES using a PID used for a DVB
                    SI table
          false(2) - disable processing of DVB SI tables. If the stream
                    is a DVB stream, then SI tables will not be
                    processed. Thus, the value must be 'true' to
                    correctly process DVB inTSs"
    DEFVAL { false }
    ::= { rgbnVideoInTsEntry 17}

rgbnVideoInTsEnaAtscTabProc OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "ATSC protocol and system information protocol (PSIP) tables are
        transmitted in MPEG packets using reserved values for PIDs.
        However, these reserved values were not specified in Table 2-3
        of early versions of document ISO/IEC 13818-1. Thus, transport
        streams could include video and audio elementary streams (ES)
        that use the PIDs reserved for transport of ATSC PSIP tables.
        When an inTS is configured, the type of stream is discovered
        by processing the DVB SI and ATSC PSIP tables. When a video
        or audio ES uses a PID reserved for SI or PSIP table processing,
        it can overwhelm the processing. Thus, this object and object
        rgbnVideoInTsEnaDvbTabProc can be used to disable SI or
        PSIP table processing. The values are:
          true(1) - enable processing of ATSC PSIP tables. Note, that
                    when enabled and the stream is not an ATSC stream,
                    then no adverse condition will occur unless the
                    inTS contains an ES using a PID used for a ATSC
                    PSIP table
          false(2) - disable processing of ATSC PSIP tables. If the
                    stream is an ATSC stream, then PSIP tables will not
                    be processed. Thus, the value must be 'true' to
                    correctly process ATSC inTSs"
    DEFVAL { false }
    ::= { rgbnVideoInTsEntry 18 }

-- +++++++++++++++++++++++++++++++++++++++++++

rgbnVideoInTsSrcIpTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RgbnVideoInTsSrcIpEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table used to configure source IP addresses for packets
        in input transport streams (inTs). When no entry is
        configured for an inTS, a packet in the stream may
        come from any source IP address. Otherwise, packets
        in a stream must come from one of the configured
        source IP addresses. The number of entries is configuration
        dependent, and the maximum number of entries is implementation
        dependent."
    ::= { rgbnVideoObjects 3 }

rgbnVideoInTsSrcIpEntry OBJECT-TYPE
    SYNTAX      RgbnVideoInTsSrcIpEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A row in the input transport stream (inTS) source IP address
        table. Row creation and deletion is supported via SNMP operations
        via object rgbnVideoInTsSrcIpRowStatus. Only the 'createAndGo'
        and 'destroy' operations are supported. The inTS must exist
        before entries can be created in this table. Deletion of the
        inTS will delete all associated source IP address entries."
    INDEX { rgbnVideoInTsIndex, rgbnVideoInTsSrcIp }
    ::= { rgbnVideoInTsSrcIpTable 1 }

RgbnVideoInTsSrcIpEntry ::= SEQUENCE {
    rgbnVideoInTsSrcIp          IpAddress,
    rgbnVideoInTsSrcIpRowStatus RowStatus,
    rgbnVideoInTsSrcIpActive    TruthValue
    }

rgbnVideoInTsSrcIp OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A source IP address for the inTS. Note the value
        must be a unicast address."
    ::= { rgbnVideoInTsSrcIpEntry 1 }

rgbnVideoInTsSrcIpRowStatus OBJECT-TYPE
    SYNTAX      RowStatus { active(1), createAndGo(4), destroy(6) }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The status of the row. Only 'one-shot creation' is allowed."
    ::= { rgbnVideoInTsSrcIpEntry 2 }

rgbnVideoInTsSrcIpActive OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indicates if the source is providing the packets in the inTS."
    ::= { rgbnVideoInTsSrcIpEntry 3 }

-- +++++++++++++++++++++++++++++++++++++++++++

rgbnVideoInTsSiTabTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RgbnVideoInTsSiTabEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table providing the status of all service information (SI)
        tables found in an input transport stream (inTS). There are
        some SI tables at the 'TS level' and others are at the 'program
        level', such as the PMT and EIT tables. It is possible that more
        than one instance will exist for a SI table type. Typically,
        the number of entries for an inTS will be the number of SI
        tables expected for the stream type of the inTS plus the
        number of programs in the inTS."
    ::= { rgbnVideoObjects 4 }

rgbnVideoInTsSiTabEntry OBJECT-TYPE
    SYNTAX      RgbnVideoInTsSiTabEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A row in the input transport stream (inTS) system information (SI)
        table. No row creation or deletion can be done via SNMP operations
        on this table. This table extends table rgbnVideoInTsTable. And
        it extends table rgbnVideoInProgTable when the value of the
        second index is nonzero. Thus, the inTS must exist before entries
        with the inTs index exist in this table. And the inProg must exist
        before 'program level' entries exist in this table.
        Deletion of an inTS will delete all associated system information
        table entries. Likewise, deletion of an inProg will delete all
        associated 'program level' entries. After an inTS is created,
        rows are added to this table for 'TS level SI tables' using the
        index of the inTS as specified by the value of object
        rgbnVideoInTsIndex, a value of zero for the second index,
        and the third index comes from the SI table. For 'program level
        SI tables', the first index is the value of an inTS index as
        specified by object rgbnVideoInTsIndex, the second index is
        the value of an inProg index as specified by object
        rgbnVideoInProgIndex, and the third index comes from
        the SI table."
    INDEX { rgbnVideoInTsIndex, rgbnVideoInProgIndex, rgbnVideoInTsSiTabIndex }
    ::= { rgbnVideoInTsSiTabTable 1 }

RgbnVideoInTsSiTabEntry ::= SEQUENCE {
    rgbnVideoInTsSiTabIndex     RgbnSiTabIndex,
    rgbnVideoInTsSiTabType      RgbnSiTableType,
    rgbnVideoInTsSiTabInst      Unsigned32,
    rgbnVideoInTsSiTabPid       RgbnMpegPid,
    rgbnVideoInTsSiTabExt       Unsigned32,
    rgbnVideoInTsSiTabStatus    INTEGER
    }

rgbnVideoInTsSiTabIndex OBJECT-TYPE
    SYNTAX      RgbnSiTabIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index of the SI table for an inTS when the
        second index is zero, and for an inProg when the
        second index is non-zero."
    ::= { rgbnVideoInTsSiTabEntry 1 }

rgbnVideoInTsSiTabType OBJECT-TYPE
    SYNTAX      RgbnSiTableType
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of the SI table. Note that PMT, EIT, and
        RRT tables can have more than a single instance,
        and the object rgbnVideoInTsSiTabInst must be used
        to distinguish between the instances."
    ::= { rgbnVideoInTsSiTabEntry 2 }

rgbnVideoInTsSiTabInst OBJECT-TYPE
    SYNTAX      Unsigned32(0..255)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The instance of the SI table type. For SI table types
        that have a single instance, the value is zero. For
        other table types such as PMT, EIT, and RRT, the value
        is the instance of the table. For PMT tables, this is the
        index of the program. For EIT tables, there will be
        up to 4 instances with values 0, 1, 2, and 3 for EIT-0,
        EIT-1, EIT-2, EIT-3. For RRT tables, the value would be
        the region number, such as 1 for RRT-1."
    ::= { rgbnVideoInTsSiTabEntry 3 }

rgbnVideoInTsSiTabPid OBJECT-TYPE
    SYNTAX      RgbnMpegPid
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The PID used for the table packets."
    ::= { rgbnVideoInTsSiTabEntry 4 }

rgbnVideoInTsSiTabExt OBJECT-TYPE
    SYNTAX      Unsigned32(0..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value of the extension field for the SI table.
        Some SI tables include additional information in
        this field. When not used the value is 65535."
    ::= { rgbnVideoInTsSiTabEntry 5 }

rgbnVideoInTsSiTabStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    requested(1),
                    received(2)
                    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The status of the SI table. The values are:
            requested(1) - the SI table has been requested
            received(2) - the SI table has been received"
    ::= { rgbnVideoInTsSiTabEntry 6 }

-- +++++++++++++++++++++++++++++++++++++++++++

rgbnVideoInProgTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RgbnVideoInProgEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of input programs (inProg) for each inTS. Before the
        inTS is active and a valid PAT is received, the number of entries
        in this table is number that have been configured by management
        operations. After the inTS is active and a valid PAT is received,
        the number of entries is the number of programs in the inTS, plus
        any that have been configured by management operations that do not
        have a matching inProgNo."
    ::= { rgbnVideoObjects 5 }

rgbnVideoInProgEntry OBJECT-TYPE
    SYNTAX      RgbnVideoInProgEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A row in the input program (inProg) table. Row creation
        and deletion is supported via SNMP operations via object
        rgbnVideoInProgRowStatus. Only the 'createAndGo' and 'destroy'
        operations are supported. This table extends table
        rgbnVideoInTsTable. Thus, the inTS must exist before entries
        can be created in this table. Deletion of an inTS will delete
        all associated input program entries. Note that entries can not
        be deleted that are specified in the PAT of an active inTS."
    INDEX { rgbnVideoInTsIndex, rgbnVideoInProgIndex }
    ::= { rgbnVideoInProgTable 1 }

RgbnVideoInProgEntry ::= SEQUENCE {
    rgbnVideoInProgIndex            RgbnProgIndex,
    rgbnVideoInProgRowStatus        RowStatus,
    rgbnVideoInProgNo               RgbnProgNo,
    rgbnVideoInProgName             RgbnString,
    rgbnVideoInProgEsCnt            Gauge32,
    rgbnVideoInProgPmtPid           RgbnMpegPid,
    rgbnVideoInProgPcrPid           RgbnMpegPid,
    rgbnVideoInProgOperState        RgbnOperState,
    rgbnVideoInProgBkupUse          TruthValue,
    rgbnVideoInProgBkupInTsIndex    RgbnTsIndexOrZero,
    rgbnVideoInProgBkupInProgIndex  RgbnProgIndexOrZero,
    rgbnVideoInProgBkupRecType      INTEGER,
    rgbnVideoInProgBkupStatus       INTEGER
    }

rgbnVideoInProgIndex OBJECT-TYPE
    SYNTAX      RgbnProgIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The program index in the inTS. The value is the same as the
        value for object SCTE-HMS-MPEG-MIB::mpegInputProgIndex."
    ::= { rgbnVideoInProgEntry 1 }

rgbnVideoInProgRowStatus OBJECT-TYPE
    SYNTAX      RowStatus { active(1), createAndGo(4), destroy(6) }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The status of the row. Only 'one-shot creation' is allowed.
        Only the value for object rgbnVideoInProgName can be
        modified when the row is 'active(1)'.
        Rows for programs in an active inTS may not be deleted."
    ::= { rgbnVideoInProgEntry 2 }

rgbnVideoInProgNo OBJECT-TYPE
    SYNTAX      RgbnProgNo
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The program number of the inProg. The value of this object
        is the same as the value of object
        SCTE-HMS-MPEG-MIB::mpegInputProgNo.
        If the inTS is active and a valid PAT has been received,
        then the value cannot be changed and is the value from
        the PAT. Otherwise, when the value is set, it must be
        unique for an inTs. Note that values greater than 65535
        are used are used for artificial (called 'dummy' or 'ghost')
        programs created by management operations, since the max
        value that can be specified in the PAT is 65535."
    ::= { rgbnVideoInProgEntry 3 }

rgbnVideoInProgName OBJECT-TYPE
    SYNTAX      RgbnString
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The program name for the inProg. If the inTS is active
        and an appropriate SI table has been received, then the value
        is changed to what is received. Only ATSC and DVB input
        streams contain an SI table which contains program names.
        In ATSC streams, a short name (upto 7 UTF-16 characters)
        is specified in the VCT. In DVB streams, the name is found
        in the SDT. The name can be modified a management operation,
        but when a change in value is received in an SI table, then
        the value set from a management operation is replaced.
        When the value is set to a zero length string,
        a unique value is generated for the value.
        Otherwise when set, the value must be unique for an inTS."
    DEFVAL { "" }
    ::= { rgbnVideoInProgEntry 4 }

rgbnVideoInProgEsCnt OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of elementary streams in the program. This
        matches the number of entries in table rgbnVideoInEsTable
        for the inProg."
    ::= { rgbnVideoInProgEntry 5 }

rgbnVideoInProgPmtPid OBJECT-TYPE
    SYNTAX      RgbnMpegPid
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The PID for the program map table (PMT) packets."
    ::= { rgbnVideoInProgEntry 6 }

rgbnVideoInProgPcrPid OBJECT-TYPE
    SYNTAX      RgbnMpegPid
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The PID for the program clock reference (PCR) packets."
    ::= { rgbnVideoInProgEntry 7 }

rgbnVideoInProgOperState OBJECT-TYPE
    SYNTAX      RgbnOperState
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The state of the inProg. The values are:
            up(1) - the inProg is active.
            down(2) - the inProg is not currently active"
    ::= { rgbnVideoInProgEntry 8 }

rgbnVideoInProgBkupUse OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates use of a backup program. The values are:
            true(1) - use a backup program
            false(2) - no backup program
        When a backup program is being used, the values for
        objects rgbnVideoInProgBkupInTsIndex,
        rgbnVideoInProgBkupInProgIndex, and
        rgbnVideoInProgBkupRecType are used to specify the backup
        program (for use with program substitution) and to indicate
        what action to take on recovery of the primary program
        when using the backup program.

        TODO: Update this

        When specified (and the backup program is healthy),
        a switch will occur from primary to backup when
        any of the following failures are encountered:
          1) PMT timeout - the PMT of the primary program has
                            not been received in 2 seconds
          2) Video underflow - the video ES for the program
                            has no video packets
          3) After system reboot (or a system redundancy switch)
                and the primary input remains unavailable for
                180 seconds
       The following criteria are used to determine if the backup
       program is healthy:
          1) PMT has been received and has not been timed out
          2) The ES count in the backup program is greater
             than zero. (Note: until the backup is used, it
             cannot be determined if the video ES is healthy)
             
      TODO: Add additional description to include interaction with
            program substitution and backup progam configured for input
            program.
       "
    DEFVAL { false }
    ::= { rgbnVideoInProgEntry 9 }

rgbnVideoInProgBkupInTsIndex OBJECT-TYPE
    SYNTAX      RgbnTsIndexOrZero
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Either the value zero to specify no inTS, or the
        index of an inTS that together with the value of
        object rgbnVideoInProgBkupInProgIndex identifies an inProg,
        which is the backup program for the grooming."
    ::= { rgbnVideoInProgEntry 10 }

rgbnVideoInProgBkupInProgIndex OBJECT-TYPE
    SYNTAX      RgbnProgIndexOrZero
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Either the value zero to specify no inProg, or the
        index of an inProg that together with the value of
        object rgbnVideoInProgBkupInTsIndex identifies an inProg,
        which is the backup program for the grooming."
    ::= { rgbnVideoInProgEntry 11 }

rgbnVideoInProgBkupRecType OBJECT-TYPE
    SYNTAX      INTEGER {
                    auto(1),
                    manual(2)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The behavior to take on the recovery of the health of the
        primary program when using the backup program. The values
        are:
            auto(1)- switch back to using the primary program
                        when it is healthy (also called revertive)
            manual(2) - only switch to the primary program
                        when commanded by management action
                        (also called non-revertive)

       The following criteria are used to determine if the primary
       program is healthy:
          1) PMT has been received and has not been timed out
          2) The ES count in the backup program is greater
             than zero. (Note: until the primary is used, it
             cannot be determined if the video ES is healthy)

        The table rgbnCoreActionTable is used to perform a
        manual switch on a single grooming session from
        primary to backup or backup to primary, and to attempt
        to switch from each backup to its corresponding
        primary."
    DEFVAL  { auto }
    ::= { rgbnVideoInProgEntry 12 }

rgbnVideoInProgBkupStatus       OBJECT-TYPE
    SYNTAX      INTEGER {
                    noBackupRedundancy(1),
                    primaryActive(2),
                    backupActive(3)
                    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This field represents the status of Program 
         Redundancy Status. The values are:
            noBackupRedundancy(1) - No Program Redundancy
            primaryActive(2)      - Primary Program Redundancy
                                    is in Active State.
            backupActive(3)       - Backup Program Redundancy
                                    is in Active State."
    ::= { rgbnVideoInProgEntry 13 }

-- +++++++++++++++++++++++++++++++++++++++++++

rgbnVideoInEsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RgbnVideoInEsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table listing the elementary streams (ES) in each input
        program (inProg) within each input TS (inTS). Before an inTS
        is active and a valid PAT and PMTs are received, the number
        of entries in this table for inProgs in an inTS is the number
        that have been created by management operations. After
        an inTS is active, and a valid PAT and PMT are received,
        the number of entries is the number of ESs in active inProgs,
        plus any that have been configured by management operations
        that do not have a matching inESindex."
    ::= { rgbnVideoObjects 6 }

rgbnVideoInEsEntry OBJECT-TYPE
    SYNTAX      RgbnVideoInEsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A row in the input elementary stream (inES) table. Row creation
        and deletion is supported via SNMP operations using object
        rgbnVideoInEsRowStatus. Only the 'createAndGo' and 'destroy'
        operations are supported. This table extends table
        rgbnVideoInProgTable (and rgbnVideoInTsTable). Thus, the inProg
        must exist before entries exist or can be created in this table.
        Deletion of an inProg will delete all associated ES entries.
        After an inProg is created, rows come and go due to their
        existence in the program map table (PMT) for an inProg."
    INDEX { rgbnVideoInTsIndex, rgbnVideoInProgIndex, rgbnVideoInEsIndex }
    ::= { rgbnVideoInEsTable 1 }

RgbnVideoInEsEntry ::= SEQUENCE {
    rgbnVideoInEsIndex          RgbnEsIndex,
    rgbnVideoInEsType           RgbnEsType,
    rgbnVideoInEsStreamType     RgbnEsStreamType,
    rgbnVideoInEsPid            RgbnMpegPid,
    rgbnVideoInEsPmtOrder       Unsigned32,
    rgbnVideoInEsScrambled      TruthValue,
    rgbnVideoInEsRowStatus      RowStatus,
    rgbnVideoInEsMgmtCre        TruthValue,
    rgbnVideoInEsLang           OCTET STRING,
    rgbnVideoInEsStreamSubType  RgbnEsStreamSubType
    }

rgbnVideoInEsIndex OBJECT-TYPE
    SYNTAX      RgbnEsIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The elementary stream (ES) index in the inProg."
    ::= { rgbnVideoInEsEntry 1 }

rgbnVideoInEsType OBJECT-TYPE
    SYNTAX      RgbnEsType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The type of the inES. Note that if set by
        management operation and the value is different than
        what is specified in the PMT (when the inProg is active),
        then the value from the PMT will be used."
    ::= { rgbnVideoInEsEntry 2 }

rgbnVideoInEsStreamType OBJECT-TYPE
    SYNTAX      RgbnEsStreamType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The stream type of the inES. Note that if set by
        management operation and the value is different than
        what is specified in the PMT (when the inProg is active),
        then the value from the PMT will be used."
    ::= { rgbnVideoInEsEntry 3 }

rgbnVideoInEsPid OBJECT-TYPE
    SYNTAX      RgbnMpegPid
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The PID for packets in the inES. Note that if set by
        management operation and the value is different than
        what is specified in the PMT (when the inProg is active),
        then the value from the PMT will be used."
    ::= { rgbnVideoInEsEntry 4 }

rgbnVideoInEsPmtOrder OBJECT-TYPE
    SYNTAX      Unsigned32(1..32)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The one-based order (index) of the inES in the PMT for
        the program."
    ::= { rgbnVideoInEsEntry 5 }

rgbnVideoInEsScrambled OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indicates if the data of the inES is encrypted (which is
        also called 'scrambled'). The values are:
            true(1) - the data is encrypted
            false(2) - the data is not encrypted"
    ::= { rgbnVideoInEsEntry 6 }

rgbnVideoInEsRowStatus OBJECT-TYPE
    SYNTAX      RowStatus { active(1), createAndGo(4), destroy(6) }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The status of the row. Only 'one-shot creation' is allowed."
    ::= { rgbnVideoInEsEntry 7 }

rgbnVideoInEsMgmtCre OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indicates if the ES was created by management operation,
        or by discovery from the inProg. The values are:
          true(1) - ES created by management operation
          false(2) - ES created by discovery from the inProg"
    ::= { rgbnVideoInEsEntry 8 }

rgbnVideoInEsLang OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(0 | 3))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Specifies the language code for the inES. The value is
        a zero length string when no language is associated with
        the inES. Otherwise, the value must be 3 characters for
        a language defined in ISO 639-2. For example, the french
        language has the 3 character code 'fre'."
    DEFVAL { ''h }
    ::= { rgbnVideoInEsEntry 9 }

rgbnVideoInEsStreamSubType OBJECT-TYPE
    SYNTAX      RgbnEsStreamSubType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Specifies the inES stream subtype, if any.
        The value must be consistent with the value for object
        rgbnVideoInEsStreamType."
    DEFVAL { none }
    ::= { rgbnVideoInEsEntry 10 }

-- +++++++++++++++++++++++++++++++++++++++++++

rgbnVideoOutTsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RgbnVideoOutTsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of output transport streams (outTS). The number
        of entries is configuration dependent, and the maximum
        number of entries is implementation dependent."
    ::= { rgbnVideoObjects 7 }

rgbnVideoOutTsEntry OBJECT-TYPE
    SYNTAX      RgbnVideoOutTsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A row in the output transport stream (outTS) table. Row creation
        and deletion is supported via SNMP operations via object
        rgbnVideoOutTsRowStatus. Only the 'createAndGo' and 'destroy'
        operations are supported.
        Note that object rgbnVideoOutTsSystem determines the type of
        output stream. When the value is 'atsc(3)', the objects
        that have descriptors that start with 'rgbnVideoOutTsAtsc'
        are used, and otherwise not used (but must have valid values).
        When the value is 'dvb(3)', the objects
        that have descriptors that start with 'rgbnVideoOutTsDvb'
        are used, and otherwise not used (but must have valid values)."
    INDEX { rgbnVideoOutTsIndex }
    ::= { rgbnVideoOutTsTable 1 }

RgbnVideoOutTsEntry ::= SEQUENCE {
    rgbnVideoOutTsIndex              RgbnTsIndex,
    rgbnVideoOutTsRowStatus          RowStatus,
    rgbnVideoOutTsIfIndex            Unsigned32,
    rgbnVideoOutTsIpAddr             IpAddress,
    rgbnVideoOutTsUdpPort            Unsigned32,
    rgbnVideoOutTsStreamType         RgbnTsStreamType,
    rgbnVideoOutTsName               RgbnString,
    rgbnVideoOutTsBitrate            Unsigned32,
    rgbnVideoOutTsNitPid             RgbnMpegPid,
    rgbnVideoOutTsRtpFecMode         INTEGER,
    rgbnVideoOutTsFecD               Unsigned32,
    rgbnVideoOutTsFecL               Unsigned32,
    rgbnVideoOutTsDpiMode            INTEGER,
    rgbnVideoOutTsArp                TruthValue,
    rgbnVideoOutTsDestMac            MacAddress,
    rgbnVideoOutTsTsId               RgbnTsId,
    rgbnVideoOutTsProgCnt            Gauge32,
    rgbnVideoOutTsSiTableCnt         Gauge32,
    rgbnVideoOutTsAtscMgtIntv        Unsigned32,
    rgbnVideoOutTsAtscCvctIntv       Unsigned32,
    rgbnVideoOutTsAtscModMode        INTEGER,
    rgbnVideoOutTsAtscSttSrc         RgbnTsIndexOrZero,
    rgbnVideoOutTsAtscRrtSrc         RgbnTsIndexOrZero,
    rgbnVideoOutTsAtscEit0Pid        RgbnMpegPid,
    rgbnVideoOutTsAtscEit0Intv       Unsigned32,
    rgbnVideoOutTsAtscEit1Pid        RgbnMpegPid,
    rgbnVideoOutTsAtscEit1Intv       Unsigned32,
    rgbnVideoOutTsAtscEit2Pid        RgbnMpegPid,
    rgbnVideoOutTsAtscEit2Intv       Unsigned32,
    rgbnVideoOutTsAtscEit3Pid        RgbnMpegPid,
    rgbnVideoOutTsAtscEit3Intv       Unsigned32,
    rgbnVideoOutTsDvbNetId           RgbnDvbNetId,
    rgbnVideoOutTsDvbOrigNetId       RgbnDvbNetId,
    rgbnVideoOutTsDvbModMode         INTEGER,
    rgbnVideoOutTsDvbNitSrc          RgbnTsIndexOrZero,
    rgbnVideoOutTsDvbTdtTotSrcType   INTEGER,
    rgbnVideoOutTsDvbTdtTotSrc       RgbnTsIndexOrZero,
    rgbnVideoOutTsDvbSdtGen          TruthValue,
    rgbnVideoOutTsDvbEitGen          TruthValue,
    rgbnVideoOutTsUseLargeBufs       TruthValue,
    rgbnVideoOutTsUseOnlySpts        TruthValue,
    rgbnVideoOutTsBitrateThreshold   Unsigned32,
    rgbnVideoOutTsTransCodeEna       TruthValue,
    rgbnVideoOutTsTcMode             INTEGER,
    rgbnVideoOutTsMbrTsId            Unsigned32,
    rgbnVideoOutTsMbrGroupType       INTEGER,
    rgbnVideoOutTsMbrGroupSubType    INTEGER,
    rgbnVideoOutTsType               INTEGER,
    rgbnVideoOutTsInResolClass       INTEGER,
    rgbnVideoOutTsVideoStandard      INTEGER,
    rgbnVideoOutTsInEncodingFormat   INTEGER,
    rgbnVideoOutTsOutEncodingFormat  INTEGER,
    rgbnVideoOutTsAsyncDataBitRate   Unsigned32,
    rgbnVideoOutTsOutResolClass      INTEGER,
    rgbnVideoOutTsBitRateMax         Unsigned32,
    rgbnVideoOutTsActualVideoBitRate Unsigned32
    }

rgbnVideoOutTsIndex OBJECT-TYPE
    SYNTAX      RgbnTsIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index of the outTS. The value is also an index for tables
        defined in MIB module SCTE-HMS-MPEG-MIB, such as table
        mpegOutputTSTableobject indexed by object mpegOutputTSIndex."
    ::= { rgbnVideoOutTsEntry 1 }

rgbnVideoOutTsRowStatus OBJECT-TYPE
    SYNTAX      RowStatus { active(1), createAndGo(4), destroy(6) }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The status of the row. Only 'one-shot creation' is allowed."
    ::= { rgbnVideoOutTsEntry 2 }

rgbnVideoOutTsIfIndex OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The interface identifier on which the outTS is to be sent.
        The triple of objects (rgbnVideoOutTsIfIndex, rgbnVideoOutTsIpAddr,
        rgbnVideoOutTsUdpPort) is an alternate index of the row. Thus,
        the combination of the values must be unique."
    ::= { rgbnVideoOutTsEntry 3 }

rgbnVideoOutTsIpAddr OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The destination IP address in packets in the outTS. If the
        address is a unicast address, then the address must be in the
        same IP sub-net configured for the interface. The triple of
        objects (rgbnVideoOutTsIfIndex, rgbnVideoOutTsIpAddr,
        rgbnVideoOutTsUdpPort) is an alternate index of the row.
        Thus, the combination of the values must be unique."
    ::= { rgbnVideoOutTsEntry 4 }

rgbnVideoOutTsUdpPort OBJECT-TYPE
    SYNTAX      Unsigned32(0..65535)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The destination UDP port in packets in the outTS. The triple
        of objects (rgbnVideoOutTsIfIndex, rgbnVideoOutTsIpAddr,
        rgbnVideoOutTsUdpPort) is an alternate index of the row.
        Thus, the combination of the values must be unique."
    ::= { rgbnVideoOutTsEntry 5 }

rgbnVideoOutTsStreamType OBJECT-TYPE
    SYNTAX      RgbnTsStreamType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates the outTS stream type. This affects and determines
        the SI tables to be included in the output TS, and determines
        if sets of objects in this table are applicable. When the
        value is 'atsc(3)', the objects with descriptors that start
        with 'rgbnVideoOutTsAtsc' are used."
    DEFVAL { mpeg2 }
    ::= { rgbnVideoOutTsEntry 6 }

rgbnVideoOutTsName OBJECT-TYPE
    SYNTAX      RgbnString
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The name of the outTs. When the value is set to a zero
        length string, then a unique value is generated for the
        value. There is no requirement that the value be unique."
    DEFVAL { "" }
    ::= { rgbnVideoOutTsEntry 7 }

rgbnVideoOutTsBitrate OBJECT-TYPE
    SYNTAX      Unsigned32(100..160000)
    UNITS       "Kilo-bits per second (Kbps)"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The actual bit-rate in kilo-bits per second of the outTS. If
        the sum of the bit-rates of the elementary streams contained
        in the outTS is less than this value, then the outTS will have
        padding inserted to achieve this bit-rate. If the sum of the
        bit-rates is higher than this bit-rate, then transrating will
        be applied based on the value of object rgbnVideoGrmRateShapeType
        of each program in the outTS to reduce the bit-rate to the
        configured output bit-rate. (Note: transrating is the operation
        of reducing the bit-rate of a video stream while preserving
        the quality.)"
    ::= { rgbnVideoOutTsEntry 8 }

rgbnVideoOutTsNitPid OBJECT-TYPE
    SYNTAX      RgbnMpegPid(16 | 48..8190)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The PID for the NIT in the outTS. The value can not be the
        same as any of the reserved PID values.
        For DVB TS stream type, the value must be 16. For 
        TODO: finish this!
        "
    ::= { rgbnVideoOutTsEntry 9 }

rgbnVideoOutTsRtpFecMode OBJECT-TYPE
    SYNTAX      INTEGER {
                    none(1),
                    rtpEncapOnly(2),
                    bothRtpEncapAndFecCoding(3)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates if RTP encapsulation and FEC coding is applied on
        the outTS.
        The values are:
            none(1) - no RTP encapsulation and no FED coding
            rtpOnly(2) - RTP encapsulation and no FEC coding
            bothRtpAndFec(3) - both RTP encapsulation and FEC coding
        Note that when FEC coding is being applied, it uses the values
        of the 'L' and 'D' parameters as specified by objects
        rgbnVideoOutTsFecD and rgbnVideoOutTsFecL. When the outTS
        has FEC coding, then 4 additional destination UDP ports are
        used to send packets as specified in 'proMEPG-COP#3'. The
        ports are consecutive and higher from the value of the port
        specified by object rgbnVideoOutTsUdpPort."
    DEFVAL   { none }
    ::= { rgbnVideoOutTsEntry 10 }

rgbnVideoOutTsFecD OBJECT-TYPE
    SYNTAX      Unsigned32(4..20)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The 'matrix height dimension' used when FEC coding is applied.
        The product of the height and width must be less than or equal
        to 100."
    DEFVAL   { 4 }
    ::= { rgbnVideoOutTsEntry 11 }

rgbnVideoOutTsFecL OBJECT-TYPE
    SYNTAX      Unsigned32(1..20)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The 'matrix width dimension' used when FEC coding is applied.
        The product of the height and width must be less than or equal
        to 100."
    DEFVAL   { 1 }
    ::= { rgbnVideoOutTsEntry 12 }

rgbnVideoOutTsDpiMode OBJECT-TYPE
    SYNTAX      INTEGER {
                    noDpi(1),
                    allProgDpi(2),
                    selProgDpi(3)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates the mode for how DPI is applied to programs in
        the outTS. The values are:
            noDpi(1) - DPI is disabled for all program in the outTS
            allProgDpi(2) - DPI is enabled for all programs regardless
                        of the setting of object rgbnVideoOutProgDpi
                        for an outProg.
                        Note that DPI is restricted by licensing. For this
                        setting, a 'bandwidth DPI' license must be
                        installed and available capability must exist
                        for DPI to occur.
            selProgDpi(3) - DPI is enabled for programs that have
                        DPI enabled as specified by object
                        rgbnVideoOutProgDpi for an outProg.
                        Note that DPI is restricted by licensing. For this
                        setting, a 'count DPI' license must be installed
                        and available capability must exist for
                        DPI to occur."
    DEFVAL  { noDpi }
    ::= { rgbnVideoOutTsEntry 13 }

rgbnVideoOutTsArp OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutTsIpAddr is a
        unicast IP address, this object's value indicates if ARPs
        should be used to determine the MAC address of the destination
        network interface for the device or router. Otherwise, the
        value is ignored. The values are:
            true(1) - Use ARP to determine the MAC address
            false(2) - Use the value of object rgbnVideoOutTsDestMac
                        for the MAC address"
    DEFVAL   { true }
    ::= { rgbnVideoOutTsEntry 14 }

rgbnVideoOutTsDestMac OBJECT-TYPE
    SYNTAX      MacAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the output address is a unicast address, and object
        rgbnVideoOutTsArp has value 'false(2)', then the MAC address
        of the target (the network interface of the device or router)
        of the outTS . Otherwise, the value is not used, and should be
        all zeros."
    ::= { rgbnVideoOutTsEntry 15 }

rgbnVideoOutTsTsId OBJECT-TYPE
    SYNTAX      RgbnTsId
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The TSID for the outTS."
    ::= { rgbnVideoOutTsEntry 16 }

rgbnVideoOutTsProgCnt OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of programs in the outTS. This matches the number of
        entries in table rgbnVideoOutProgTable for the outTS."
    ::= { rgbnVideoOutTsEntry 17 }

rgbnVideoOutTsSiTableCnt OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of service information (SI) tables in the outTS.
        This matches the number of entries in table rgbnVideoOutTsSiTable
        for the outTS."
    ::= { rgbnVideoOutTsEntry 18 }

rgbnVideoOutTsAtscMgtIntv OBJECT-TYPE
    SYNTAX      Unsigned32(10..150)
    UNITS       "milliseconds (ms)"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The interval in milliseconds between generating each
        Master Guide Table (MGT) in the outTS."
    DEFVAL  { 150 }
    ::= { rgbnVideoOutTsEntry 19 }

rgbnVideoOutTsAtscCvctIntv OBJECT-TYPE
    SYNTAX      Unsigned32(10..400)
    UNITS       "milliseconds (ms)"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The interval in milliseconds between generating each
        Cable Virtual Channel Table (CVCT) in the outTS."
    DEFVAL  { 400 }
    ::= { rgbnVideoOutTsEntry 20 }

rgbnVideoOutTsAtscModMode OBJECT-TYPE
    SYNTAX      INTEGER {
                    analog(1),
                    scte64qam(2),
                    scte256qam(3),
                    atsc8vsb(4),
                    atsc16vsb(5)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The modulation mode."
    DEFVAL  { scte256qam }
    ::= { rgbnVideoOutTsEntry 21 }

rgbnVideoOutTsAtscSttSrc OBJECT-TYPE
    SYNTAX      RgbnTsIndexOrZero
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The index of an inTS (the value of object rgbnVideoInTsIndex)
        containing a program used in the output that contains a
        System Time Table (STT). The STTs from that inTS will be
        sent in the outTS. If not used, the value is 0."
    DEFVAL  { 0 }
    ::= { rgbnVideoOutTsEntry 22 }

rgbnVideoOutTsAtscRrtSrc OBJECT-TYPE
    SYNTAX      RgbnTsIndexOrZero
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The index of an inTS (the value of object rgbnVideoInTsIndex)
        containing a program used in the output that contains a
        Rating Region Table (RRT). The RRTs from that inTS will be
        sent in the outTS. If not used, the value is 0."
    DEFVAL  { 0 }
    ::= { rgbnVideoOutTsEntry 23 }

rgbnVideoOutTsAtscEit0Pid OBJECT-TYPE
    SYNTAX      RgbnMpegPid(48..8190|65535)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The PID for Event Information Table (EIT) with index 0."
    DEFVAL  { 65535 }
    ::= { rgbnVideoOutTsEntry 24 }

rgbnVideoOutTsAtscEit0Intv OBJECT-TYPE
    SYNTAX      Unsigned32(10..500)
    UNITS       "milliseconds (ms)"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The interval in milliseconds between generating each
        EIT 0 in the outTS."
    DEFVAL  { 500 }
    ::= { rgbnVideoOutTsEntry 25 }

rgbnVideoOutTsAtscEit1Pid OBJECT-TYPE
    SYNTAX      RgbnMpegPid(48..8190|65535)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The PID for Event Information Table (EIT) with index 1."
    DEFVAL  { 65535 }
    ::= { rgbnVideoOutTsEntry 26 }

rgbnVideoOutTsAtscEit1Intv OBJECT-TYPE
    SYNTAX      Unsigned32(1000..3000)
    UNITS       "milliseconds (ms)"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The interval in milliseconds between generating each
        EIT 1 in the outTS."
    DEFVAL  { 3000 }
    ::= { rgbnVideoOutTsEntry 27 }

rgbnVideoOutTsAtscEit2Pid OBJECT-TYPE
    SYNTAX      RgbnMpegPid(48..8190|65535)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The PID for Event Information Table (EIT) with index 2."
    DEFVAL  { 65535 }
    ::= { rgbnVideoOutTsEntry 28 }

rgbnVideoOutTsAtscEit2Intv OBJECT-TYPE
    SYNTAX      Unsigned32(30000..60000)
    UNITS       "milliseconds (ms)"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The interval in milliseconds between generating each
        EIT 2 in the outTS."
    DEFVAL  { 60000 }
    ::= { rgbnVideoOutTsEntry 29 }

rgbnVideoOutTsAtscEit3Pid OBJECT-TYPE
    SYNTAX      RgbnMpegPid(48..8190|65535)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The PID for Event Information Table (EIT) with index 3."
    DEFVAL  { 65535 }
    ::= { rgbnVideoOutTsEntry 30 }

rgbnVideoOutTsAtscEit3Intv OBJECT-TYPE
    SYNTAX      Unsigned32(30000..60000)
    UNITS       "milliseconds (ms)"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The interval in milliseconds between generating each
        EIT 3 in the outTS."
    DEFVAL  { 60000 }
    ::= { rgbnVideoOutTsEntry 31 }

rgbnVideoOutTsDvbNetId OBJECT-TYPE
    SYNTAX      RgbnDvbNetId
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The 'network_id' for the outTS. DVB uses two labels related
        to the concept of a delivery system, namely the network_id and
        the original_network_id. The latter is intended to support the
        unique identification of a service, contained in a TS, even if
        that TS has been transferred to another delivery system than
        the delivery system where it originated. The network_id
        uniquely identifies the network/delivery system.

        Note that the default value is a 'temporary private use' value,
        and should be changed to the appropriate value when used."
    DEFVAL  { 65281 } -- 'ff01'h
    ::= { rgbnVideoOutTsEntry 32 }

rgbnVideoOutTsDvbOrigNetId OBJECT-TYPE
    SYNTAX      RgbnDvbNetId
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The 'original_network_id' for the outTS. DVB uses two labels
        related to the concept of a delivery system, namely the
        network_id and the original_network_id. The latter is intended
        to support the unique identification of a service, contained
        in a TS, even if that TS has been transferred to another
        delivery system than the delivery system where it originated.
        The original_network_id uniquely identifies the originating
        delivery system.

        Note that the default value is a 'temporary private use' value,
        and should be changed to the appropriate value when used."
    DEFVAL  { 65281 } -- 'ff01'h
    ::= { rgbnVideoOutTsEntry 33 }

rgbnVideoOutTsDvbModMode OBJECT-TYPE
    SYNTAX      INTEGER {
                    scte64qam(1),
                    scte256qam(2)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The modulation mode when used on a cable delivery system."
    DEFVAL  { scte256qam }
    ::= { rgbnVideoOutTsEntry 34 }

rgbnVideoOutTsDvbNitSrc OBJECT-TYPE
    SYNTAX      RgbnTsIndexOrZero
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Determines if a DVB network information table (NIT) is to
        be included in the outTS, and if so, the source of the
        information. The values are:
          0 - no NIT is generated in the outTS
          index of an inTS - generate a NIT in the outTS. However,
                the inTS is not active or does not include the
                data needed to generate a NOT, then no NIT is
                generated"
    DEFVAL  { 0 }
    ::= { rgbnVideoOutTsEntry 35 }

rgbnVideoOutTsDvbTdtTotSrcType OBJECT-TYPE
    SYNTAX      INTEGER {
                    none(1),
                    local(2),
                    inTs(3)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Determines if DVB time tables (time and date table (TDT)
        and time offset table (TOT)) are to be included in the
        outTS, and if so, the source of the information. The
        values are:
          none(1) - no DVB time tables are generated in the outTS
          local(2) - the DVB time tables are generated using
                        local information
          inTs(3) - the time information found in inTS with index
                        specified by rgbnVideoOutTsDvbTdtTotSrc
                        is used to generate "
    DEFVAL  { none }
    ::= { rgbnVideoOutTsEntry 36 }

rgbnVideoOutTsDvbTdtTotSrc OBJECT-TYPE
    SYNTAX      RgbnTsIndexOrZero
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The index of the inTS used to provide time information when
        the value of object rgbnVideoOutTsDvbTdtTotSrcType is
        'inTs(3)'. If the value is zero, the inTS is not active,
        or there is no time information in the inTS, then no DVB
        time tables will be generated."
    DEFVAL  { 0 }
    ::= { rgbnVideoOutTsEntry 37 }

rgbnVideoOutTsDvbSdtGen OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Determines if a DVB service description table (SDT) is to
        be included in the outTS.
        values are:
          true(1) -  an SDT is generated
          false(2) - no SDT is generated"
    DEFVAL  { true }
    ::= { rgbnVideoOutTsEntry 38 }

rgbnVideoOutTsDvbEitGen OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Determines if DVB event information tables (both present
        and future) (P/F EIT) are to be included in the outTS.
        values are:
          true(1) - EITs are generated for each active grooming session
                        in the outTS using the event information received
                        from each corresponding input program. If an EIT 
                        is not received for an input program, then the
                        corresponding output EIT will be empty
          false(2) - no EIT is generated in the outTS"
    DEFVAL  { true }
    ::= { rgbnVideoOutTsEntry 39 }

rgbnVideoOutTsUseLargeBufs OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates whether or not large buffers are supported
        for 'seamless slicing'. This is useful for H.264 video
        streams, and should be set if any program in the outTS
        is h.264. This will result in a 3 seconds instead of
        a 1 second latency, even for MPEG-2 video streams.
        The values are:
          true(1) - use large buffers to support 'seamless slicing'
          false(2) - use normal size buffers"
    DEFVAL  { false }
    ::= { rgbnVideoOutTsEntry 40 }

rgbnVideoOutTsUseOnlySpts OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Used to restrict the number of configured output programs
        to one, and thus, making the outTS a single program transport
        stream (SPTS). The values are:
          true(1) - restrict configuration to a single program
                    and thus, the outTS will be a SPTS
          false(2) - no restriction on the number of configured
                    programs, and thus, the outTS may be a MPTS"
    DEFVAL  { false }
    ::= { rgbnVideoOutTsEntry 41 }

rgbnVideoOutTsBitrateThreshold OBJECT-TYPE
    SYNTAX      Unsigned32(0..1000)
    UNITS       "percentage times 10"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "A threshold value for the bandwidth of the outTS content
        expressed in percentage times 10 of the configured bit-rate
        (which is the value of object rgbnVideoOutTsBitrate). There are
        two threshold crossing events associated with this object. The
        first occurs then the bandwidth of the content changes from being
        below the threshold to exceeding the threshold. The second
        occurs when the bandwidth of the content changes from being
        above the threshold to below the threshold value.
        Thus, when the threshold value is set to a value of 100% 
        (the value 1000), no threshold crossing event will occur.
        Likewise, when the threshold value is set to 0, a threshold
        crossing event will occur when content is first delivered.

        Please note that the bandwidth of an outTS is specified by
        object rgbnVideoOutTsBitrate. When the bandwidth of programs
        in the outTS (the content) is less than this configured value,
        'stuffing' bits are inserted in the outTS so that its bandwidth
        is constant at the configured value. This threshold is for the
        bandwidth of the content ignoring the bandwidth of the stuffing
        bits."
    DEFVAL { 500 } -- 50%
    ::= { rgbnVideoOutTsEntry 42 }

rgbnVideoOutTsTransCodeEna    OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates if transcoding is to be performed on video streams
        in the outTS. Note that the outTS must be restircted to a SPTS.
        Also, the outTS must not be configured for FEC (object
        rgbnVideoOutTsRtpFecMode may not have value
        'bothRtpEncapAndFecCoding(3)'), and no DPI is allowed
        (object rgbnVideoOutTsDpiMode must have value 'noDpi(1)').

        when rgbnVideoOutTsType field is 'vtr(1)', this field must
          set to false.

        when rgbnVideOutTsType field is 'vtx(2)', 'avtx(3)', 'pip(4)',
          'mbr(5)', 'vtxPip(6)', 'avtxPip(7)', this field must set to
          true.
       "

    DEFVAL  { false }
    ::= { rgbnVideoOutTsEntry 43 }

rgbnVideoOutTsTcMode               OBJECT-TYPE
    SYNTAX      INTEGER {
                    iptvMode(1),
                    iptvAvMode(2)
                }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates Transcoding Mode based on rgbnVideoOutTsType

         when rgbnVideoOutTsType field is 'vtr(1)', vtx(2), 
          'pip(4)', or 'vtxPip(6)', this field must set to 
          iptvMode(1).

         when rgbnVideoOutTsType field is 'avtx(3), 'mbr(5)', or
          'avtxPip(7)', this field must set to iptvAvMode(2).
        "
    DEFVAL  { iptvMode }
    ::= { rgbnVideoOutTsEntry 44 }

rgbnVideoOutTsMbrTsId           OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates if transcoding is for mbr-ts Id."
    ::= { rgbnVideoOutTsEntry 45 }

rgbnVideoOutTsMbrGroupType      OBJECT-TYPE
    SYNTAX      INTEGER {
                    notApplicable(1),
                    mbrTs(2),
                    mbrPipTs(3)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates if transcoding is mbr-ts, vtx-pip or avtx-pip TS.

         when rgbnVideoOutTsType field is 'mbr(5)',  
          this field must set to mbrTs(2).

         when rgbnVideoOutTsType field is vtxPip(6), or 'avtxPip(7)', 
           this field must set to mbrPipTs(2).
        "
    DEFVAL  { notApplicable }
    ::= { rgbnVideoOutTsEntry 46 }

rgbnVideoOutTsMbrGroupSubType   OBJECT-TYPE
	SYNTAX      INTEGER {
                    notApplicable(1),
                    mainResolution(2),
                    pipResolution(3)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates if transcoding is vtxPip,  avtxPip or PIP TS. 
         This field represents as Main resolution or PIP resolution.
        "
    DEFVAL  { notApplicable }
    ::= { rgbnVideoOutTsEntry 47 }

rgbnVideoOutTsType   OBJECT-TYPE
    SYNTAX      INTEGER {
                    vtr(1),
                    vtx(2),
                    avtx(3),
                    pip(4),
                    mbr(5),
                    vtxPip(6),
                    avtxPip(7)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This field represents the transport Stream Type for 
         output TS.
         
         The values are:
            vtr(1)      - Video Transrating Transport Stream.
                          It requires VPM card.
            vtx(2)      - Video Transcoding Transport Stream.
                          It requires TCM card.
            avtx(3)     - Audio+Video Transcoding Transport Stream
                          It requires TCM and AMP card.
            pip(4)      - PIP Video Transcoding Transport Stream. 
                          It requires TCM card.
            mbr(5)      - Multi-bitrate Audio+Video Transport Stream. 
                          It requires TCM and AMP card.
            vtx_pip(6)  - Main+PIP Video Transcoding Transport
                          Stream. It requires TCM card.
            avtx_pip(7) - Main+PIP Audio+Video Transcoding Transport
                          Stream. It requires TCM and AMP card.
        "
    ::= { rgbnVideoOutTsEntry 48 }

rgbnVideoOutTsInResolClass OBJECT-TYPE
    SYNTAX      INTEGER {
                    sd(1),
                    hd(2)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This field represents as incoming Video resolution
         class.  The values are:
            sd(1)  - video in standard definition
            hd(2) - video in any definition or high definition"
    ::= { rgbnVideoOutTsEntry 49 }
    
rgbnVideoOutTsVideoStandard   OBJECT-TYPE
    SYNTAX      INTEGER {
                    ntsc(1),
                    pal(2) 
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This field represents Video Standard for analog color 
         television encoding system used in broadcast television 
         systems.
         The values are:
            ntsc(1) - National Television System Committee 
            pal(2)  - Phase Alternating Line"
    DEFVAL  { ntsc }
    ::= { rgbnVideoOutTsEntry 50 }

rgbnVideoOutTsInEncodingFormat OBJECT-TYPE
    SYNTAX      INTEGER {
                    mpeg2(2),
                    h264(3)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This field represents incoming Video Encoding Format.
         The values are:
            mpeg2(2) - incoming MPEG2 encoding format
            h264(3)  - incoming H.264 encoding format"
    ::= { rgbnVideoOutTsEntry 51 }

rgbnVideoOutTsOutEncodingFormat   OBJECT-TYPE
    SYNTAX      INTEGER {
                    mpeg2(2),
                    h264(3)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This field represents outgoing Encoding Format.
         The values are:
            mpeg2(2) - encode in MPEG2 format
            h264(3)  - encode in H.264 format"
    ::= { rgbnVideoOutTsEntry 52 }

rgbnVideoOutTsAsyncDataBitRate OBJECT-TYPE
    SYNTAX      Unsigned32(0..20000)
    UNITS       "Kilo-bits per second (Kbps)"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION    
        "This object is to limit the data rate within TS level.
         The recommendation is 10 percentage of object
         rgbnVideoOutTsBitrate.
         
         In the current release, the object of rgbnVideoOutTsType
         is valid for AVTX, AVTX+PIP (Main Resolution), VTX+PIP 
         (Main resolution), and VTX. The other rgbnVideoOutTsType 
         type set to zero value.
        "
    ::= { rgbnVideoOutTsEntry 53 }
    
rgbnVideoOutTsOutResolClass OBJECT-TYPE
    SYNTAX      INTEGER {
                    sd(1),
                    hd(2),
                    pip(3)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutTsTransCodeEna is
        'true(1)', the value is used. Otherwise, the value is
        ignored. The values are:
            sd(1) - video in standard definition
            hd(2) - video in high definition
            pip(3) - video in pip definition"
    DEFVAL  { hd }
    ::= { rgbnVideoOutTsEntry 54 }

rgbnVideoOutTsBitRateMax OBJECT-TYPE
    SYNTAX      Unsigned32(100..160000)
    UNITS       "Kilo-bits per second (Kbps)"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutTsTransCodeEna is
        'true(1)', the maximum Video bitrate in kilo-bits per second.
        Otherwise, the value is ignored. The value must be less
        than or equal the value of object rgbnVideoOutTsBitrate
        for the outTS.
        For 'mpeg2(2)' format, the default value is the lower
        of 15000 Kbps and the value of rgbnVideoOutTsBitrate.
        For 'h264(3)' format, the default value is the lower
        of 8000 Kbps and the value of rgbnVideoOutTsBitrate."
    ::= { rgbnVideoOutTsEntry 55 }

rgbnVideoOutTsActualVideoBitRate OBJECT-TYPE
    SYNTAX      Unsigned32(0..160000)
    UNITS       "Kilo-bits per second (Kbps)"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The actual bit rate that transcode is used for video ES"
    ::= { rgbnVideoOutTsEntry 56 }



-- +++++++++++++++++++++++++++++++++++++++++++

rgbnVideoOutTsSiTabTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RgbnVideoOutTsSiTabEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table providing the status of all service information (SI)
        tables found in an output transport stream (outTS). There are
        some SI tables at the 'TS level' and others are at the 'program
        level', such as the PMT and EIT tables. It is possible that more
        than one instance will exist for a SI table type. Typically,
        the number of entries for an outTS will be the number of SI
        tables expected for the stream type of the outTS plus the
        number of programs in the outTS."
    ::= { rgbnVideoObjects 8 }

rgbnVideoOutTsSiTabEntry OBJECT-TYPE
    SYNTAX      RgbnVideoOutTsSiTabEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A row in the output transport stream (outTS) system information (SI)
        table. No row creation or deletion can be done via SNMP operations
        on this table. This table extends table rgbnVideoOutTsTable.
        Thus, the outTS must exist before entries exist in this table. And
        it extends table rgbnVideoOutProgTable when the value of the
        second index is nonzero. Thus, the outTS must exist before entries
        with the outTs index exist in this table. And the outProg must exist
        before 'program level' entries exist in this table.
        Deletion of an outTS will delete all associated system information
        table entries. Likewise, deletion of an outProg will delete all
        associated 'program level' entries. After an outTS is created,
        rows are added to this table for 'TS level SI tables' using the
        index of the outTS as specified by the value of object
        rgbnVideoInTsIndex, a value of zero for the second index,
        and the third index comes from the SI table. For 'program level
        SI tables', the first index is the value of an outTS index as
        specified by object rgbnVideoOutTsIndex, the second index is
        the value of an outProg index as specified by object
        rgbnVideoOutProgIndex, and the third index comes from
        the SI table."
    INDEX { rgbnVideoOutTsIndex, rgbnVideoOutProgIndex, rgbnVideoOutTsSiTabIndex }
    ::= { rgbnVideoOutTsSiTabTable 1 }

RgbnVideoOutTsSiTabEntry ::= SEQUENCE {
    rgbnVideoOutTsSiTabIndex     RgbnSiTabIndex,
    rgbnVideoOutTsSiTabType      RgbnSiTableType,
    rgbnVideoOutTsSiTabInst      Unsigned32,
    rgbnVideoOutTsSiTabPid       RgbnMpegPid,
    rgbnVideoOutTsSiTabExt       Unsigned32,
    rgbnVideoOutTsSiTabStatus    INTEGER
    }

rgbnVideoOutTsSiTabIndex OBJECT-TYPE
    SYNTAX      RgbnSiTabIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index of the SI table for an outTS."
    ::= { rgbnVideoOutTsSiTabEntry 1 }

rgbnVideoOutTsSiTabType OBJECT-TYPE
    SYNTAX      RgbnSiTableType
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of the SI table. Note that PMT, EIT, and
        RRT tables can have more than a single instance,
        and the object rgbnVideoOutTsSiTabInst must be used
        to distinguish between the instances."
    ::= { rgbnVideoOutTsSiTabEntry 2 }

rgbnVideoOutTsSiTabInst OBJECT-TYPE
    SYNTAX      Unsigned32(0..255)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The instance of the SI table type. For SI table types
        that have a single instance, the value is zero. For
        other table types such as PMT, EIT, and RRT, the value
        is the instance of the table. For PMT tables, this is the
        index of the program. For EIT tables, there will be
        up to 4 instances with values 0, 1, 2, and 3 for EIT-0,
        EIT-1, EIT-2, EIT-3. For RRT tables, the value would be
        the region number, such as 1 for RRT-1."
    ::= { rgbnVideoOutTsSiTabEntry 3 }

rgbnVideoOutTsSiTabPid OBJECT-TYPE
    SYNTAX      RgbnMpegPid
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The PID used for the table packets."
    ::= { rgbnVideoOutTsSiTabEntry 4 }

rgbnVideoOutTsSiTabExt OBJECT-TYPE
    SYNTAX      Unsigned32(0..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value of the extension field for the SI table.
        Some SI tables include additional information in
        this field. When not used the value is 65535."
    ::= { rgbnVideoOutTsSiTabEntry 5 }

rgbnVideoOutTsSiTabStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    transmitted(1),
                    notTransmitted(2)
                    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The status of the SI table. The values are:
            transmitted(1) - the SI table has been transmitted
            notTransmitted(2) - the SI table has not yet been transmitted"
    ::= { rgbnVideoOutTsSiTabEntry 6 }

-- +++++++++++++++++++++++++++++++++++++++++++

rgbnVideoOutProgTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RgbnVideoOutProgEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of output programs (outProg) for each outTS.
        The number of entries is configuration dependent, and the
        maximum number of entries is implementation dependent."
    ::= { rgbnVideoObjects 9 }

rgbnVideoOutProgEntry OBJECT-TYPE
    SYNTAX      RgbnVideoOutProgEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A row in the output program (outProg) table. Row creation
        and deletion is supported via SNMP operations via object
        rgbnVideoOutTsRowStatus. Only the 'createAndGo' and 'destroy'
        operations are supported. This table extends table
        rgbnVideoOutTsTable. Thus, the outTS must exist before
        entries can be created in this table. Deletion of an
        outTs will delete all associated output program entries.
        Note that columns in the table where the prefix of their
        descriptor is rgbnVideoOutProgTc are attributes used
        only when 'transcoding' is being applied to the outProg."
    INDEX { rgbnVideoOutTsIndex, rgbnVideoOutProgIndex }
    ::= { rgbnVideoOutProgTable 1 }

RgbnVideoOutProgEntry ::= SEQUENCE {
    rgbnVideoOutProgIndex                RgbnProgIndex,
    rgbnVideoOutProgRowStatus            RowStatus,
    rgbnVideoOutProgNo                   RgbnProgNo,
    rgbnVideoOutProgSyncInName           TruthValue,
    rgbnVideoOutProgName                 RgbnString,
    rgbnVideoOutProgPmtPid               RgbnMpegPid,
    rgbnVideoOutProgProgSub              TruthValue,
    rgbnVideoOutProgDpi                  TruthValue,
    rgbnVideoOutProgConv                 TruthValue,
    rgbnVideoOutProgEsCnt                Gauge32,
    rgbnVideoOutProgAtscMajChan          Unsigned32,
    rgbnVideoOutProgAtscMinChan          Unsigned32,
    rgbnVideoOutProgOperState            RgbnOperState,
    rgbnVideoOutProgSetPmtOrder          RgbnEsIndexList,
    rgbnVideoOutProgTcFormat             INTEGER,
    rgbnVideoOutProgTcResolClass         INTEGER,
    rgbnVideoOutProgTcGopStructType      INTEGER,
    rgbnVideoOutProgTcGopMval            Unsigned32,
    rgbnVideoOutProgTcGopNval            Unsigned32,
    rgbnVideoOutProgTcIdrIntv            Unsigned32,
    rgbnVideoOutProgTcBitRateMax         Unsigned32,
    rgbnVideoOutProgTcMctfEna            INTEGER,
    rgbnVideoOutProgTcTelecineProc       TruthValue,
    rgbnVideoOutProgTcClosedCapType      INTEGER,
    rgbnVideoOutProgTcHresType           INTEGER,
    rgbnVideoOutProgTcVresType           INTEGER,
    rgbnVideoOutProgTcHresActual         Gauge32,
    rgbnVideoOutProgTcVresActual         Gauge32,
    rgbnVideoOutProgTcHresSource         Gauge32,
    rgbnVideoOutProgTcVresSource         Gauge32,
    rgbnVideoOutProgSubNoPMT             TruthValue,
    rgbnVideoOutProgTcActualBitRate      Unsigned32,
    rgbnVideoOutProgTcAspectRatio        INTEGER,
    rgbnVideoOutProgTcPipResolution      INTEGER,
    rgbnVideoOutProgTcProfile            INTEGER,
    rgbnVideoOutProgTcFieldRate          INTEGER,
    rgbnVideoOutProgTcIdrAlignment       INTEGER,
    rgbnVideoOutProgTcMode               INTEGER,
    rgbnVideoOutProgTcMbrGroupId         DisplayString,
    rgbnVideoOutProgTcA6SubId            Unsigned32,
    rgbnVideoOutProgTcRpmResolution      INTEGER,
    rgbnVideoOutProgTcAudioBitRate       Unsigned32,
    rgbnVideoOutProgTcAudioCodec         INTEGER,
    rgbnVideoOutProgTcAudioChannel       INTEGER,
    rgbnVideoOutProgTcAudioSamplingRate  INTEGER,
    rgbnVideoOutProgTcAudioGain          Integer32,
    rgbnVideoOutProgTcActiveFormat       INTEGER,
    rgbnVideoOutProgTcDisableAFD         TruthValue,
    rgbnVideoOutProgTcRuntimeErrorStr    DisplayString,
    rgbnVideoOutProgTcAudioPassthrough   INTEGER,
    rgbnVideoOutProgTcAudioStartPid      RgbnMpegPid,
    rgbnVideoOutProgTcCloseCaptionStd    INTEGER

    
--    rgbnVideoOutProgSrcType            INTEGER,
--    rgbnVideoOutProgSrcGrmIndex        RgbnGrmIndexOrZero
    }

rgbnVideoOutProgIndex OBJECT-TYPE
    SYNTAX      RgbnProgIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The program index in the outTS. The value is the same as the
        value of object SCTE-HMS-MPEG-MIB::mpegOutputProgIndex."
    ::= { rgbnVideoOutProgEntry 1 }

rgbnVideoOutProgRowStatus OBJECT-TYPE
    SYNTAX      RowStatus { active(1), createAndGo(4), destroy(6) }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The status of the row. Only 'one-shot creation' is allowed."
    ::= { rgbnVideoOutProgEntry 2 }

rgbnVideoOutProgNo OBJECT-TYPE
    SYNTAX      RgbnProgNo
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The program number for the outProg. The value of this
        object is an alternate index, and thus be unique. The value
        of this object is the same as the value for object
        SCTE-HMS-MPEG-MIB::mpegOutputProgNo. Note that values
        greater than 65535 are used are used for artificial
        (called 'dummy' or 'ghost') programs, since the max
        value that can be specified in the PAT is 65535."
    ::= { rgbnVideoOutProgEntry 3 }

rgbnVideoOutProgSyncInName OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates if the name of the inProg will be used to
        set the name of the outProg. The values are:
            true(1) - use name from inProg
            false(2) - don't use name from inProg"
    DEFVAL  { false }
    ::= { rgbnVideoOutProgEntry 4 }

rgbnVideoOutProgName OBJECT-TYPE
    SYNTAX      RgbnString
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The program name for the outProg. When the value is set
        to a zero length string, a unique value is generated for the value.
        Otherwise when set, the value must be unique for all outTSs."
    DEFVAL  { "" }
    ::= { rgbnVideoOutProgEntry 5 }

rgbnVideoOutProgPmtPid OBJECT-TYPE
    SYNTAX      RgbnMpegPid(48..8190)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The PID for the PMT of the outgoing program. The value of this object
        is used for the value of object
        SCTE-HMS-MPEG-MIB::mpegOutputProgPmtPid."
    ::= { rgbnVideoOutProgEntry 6 }

rgbnVideoOutProgProgSub OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates if program substitution is enabled for the program.
        The values are:
            true(1) - program substitution is enabled
            false(2) - program substitution is not enabled
        Note: program substitution requires an available program
        substitution session from the program substitution license.
        
        TODO: Add description of how program substitution works
        "
    DEFVAL  { false }
    ::= { rgbnVideoOutProgEntry 7 }

rgbnVideoOutProgDpi OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates if DPI is enabled for the program.
        The setting of the object is used only when the
        value for object rgbnVideoOutTsDpiMode for the outTs
        is 'selProgDpi(3)'. The values are:
            true(1) - program level DPI is enabled
            false(2) - program level DPI is not enabled
        Note: program level DPI requires an available DPI session from
        the program level DPI license."
    DEFVAL  { false }
    ::= { rgbnVideoOutProgEntry 8 }

rgbnVideoOutProgConv OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates if conversion between SCTE-30 and SCTE-35 is enabled
        for the program. The values are:
            true(1) - conversion is enabled
            false(2) - conversion is not enabled"
    DEFVAL  { false }
    ::= { rgbnVideoOutProgEntry 9 }

rgbnVideoOutProgEsCnt OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of elementary streams in the program. This
        matches the number of entries in table rgbnVideoOutEsTable
        for the outProg."
    ::= { rgbnVideoOutProgEntry 10 }

rgbnVideoOutProgAtscMajChan OBJECT-TYPE
    SYNTAX      Unsigned32(0|1..99)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutTsSystem is 'atsc(3)',
        the major channel number for the program. Otherwise, the
        value is zero."
    DEFVAL  { 0 }
    ::= { rgbnVideoOutProgEntry 11 }

rgbnVideoOutProgAtscMinChan OBJECT-TYPE
    SYNTAX      Unsigned32(0|1..999)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutTsSystem is 'atsc(3)',
        the minor channel number for the program. Otherwise, the
        value is zero."
    DEFVAL  { 0 }
    ::= { rgbnVideoOutProgEntry 12 }

rgbnVideoOutProgOperState OBJECT-TYPE
    SYNTAX      RgbnOperState
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The state of the outProg. The values are:
            up(1) - the outProg is active.
            down(2) - the outProg is not currently active"
    ::= { rgbnVideoOutProgEntry 13 }

rgbnVideoOutProgSetPmtOrder OBJECT-TYPE
    SYNTAX      RgbnEsIndexList
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "An action object to set the PMT order for elementary
        streams (ESs) in the outProg. No value other than a
        zero length string can be set on row creation. After
        the row exists, a read will always return a zero length
        string. On a SET, the value is a list of 32-bit integers
        encoded in big-endian. The first integer is the number 
        of ES indices and the remainder of the integers are ES index
        values that specify the PMT order. The number of
        ES indices must match the number of ESs in the outProg,
        the ES indices must match those found in the outProg.
        For example, if the outProg has 3 ESs with indices 2, 89,
        1009. If the PMT order is for ES with index 89 to be first,
        ES with index 1009 to be second, and ES with index 2 to
        be last, then the 32-bit integers encoded as the value
        would be 3, 89, 1009, and 2."
    DEFVAL { ''h }
    ::= { rgbnVideoOutProgEntry 14 }

rgbnVideoOutProgTcFormat OBJECT-TYPE
    SYNTAX      INTEGER {
                    mpeg2(2),
                    h264(3)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutTsTransCodeEna is
        'true(1)', the encoding type for the outProg. Otherwise,
        the value is ignored. The values are:
            mpeg2(2) - encode in MPEG2 format
            h264(3) - encode in H.264 format"
    DEFVAL  { mpeg2 }
    ::= { rgbnVideoOutProgEntry 15 }
    
rgbnVideoOutProgTcResolClass OBJECT-TYPE
    SYNTAX      INTEGER {
                    sd(1),
                    hd(2),
                    pip(3)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutTsTransCodeEna is
        'true(1)', the value is used. Otherwise, the value is
        ignored. The values are:
            sd(1) - video in standard definition
            hd(2) - video in high definition
            pip(3) - video in pip definition"
    DEFVAL  { hd }
    ::= { rgbnVideoOutProgEntry 16 }

rgbnVideoOutProgTcGopStructType OBJECT-TYPE
    SYNTAX      INTEGER {
                    followInput(1),
                    simple(2)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutTsTransCodeEna is
        'true(1)', specifies how the GOP structure is determined.
        Otherwise, the value is ignored. The values are:
            followInput(1) - use the GOP structure of the input
            simple(2) - use a simple format based on the values of
                    objects rgbnVideoOutProgTcGopMval and
                    rgbnVideoOutProgTcGopNval
            hierarchical(3) - use a hierarchical format based on
                    the values of objects rgbnVideoOutProgTcGopMval
                    and rgbnVideoOutProgTcGopNval"
    DEFVAL  { simple }
    ::= { rgbnVideoOutProgEntry 17 }

rgbnVideoOutProgTcGopMval OBJECT-TYPE
    SYNTAX      Unsigned32(1..4 | 8)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutTsTransCodeEna is
        'true(1)' and the the value of rgbnVideoOutProgTcGopStructType
        is not 'followInput(1)', specifes the spacing of P frames in
        the output. Otherwise, the value is ignored.
        A higher value generally results in a lower data rate.
        
        For 'mpeg2(2)' format, the values may be 1, 2, or 3 and the
        the default is 3.
        
        For 'h264(3)' format, the values may 1, 2, 3, 4 or 8 and
        the default is 4."
    ::= { rgbnVideoOutProgEntry 18 }

rgbnVideoOutProgTcGopNval OBJECT-TYPE
    SYNTAX      Unsigned32(1..256)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutTsTransCodeEna is
        'true(1)' and the the value of rgbnVideoOutProgTcGopStructType
        is not 'followInput(1)', specifies the number of frames in
        each GOP. Otherwise, the value is ignored. A higher value
        generally results in a lower data rate.
        
        For 'mpeg2(2)' format, the value must be less than or equal to
        60 and should be a multiple of the GopM value. If not, the nearest
        lower mutiple is used. The default is 15.
        
        For 'h264(3)' format, the value must be less than or equal to 
        240 and should be a multiple of the GopM value. The default is 32."
    ::= { rgbnVideoOutProgEntry 19 }

rgbnVideoOutProgTcIdrIntv OBJECT-TYPE
    SYNTAX      Unsigned32(1..256)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutTsTransCodeEna is
        'true(1)' and the format is 'h264(3)', specifies the
        instantaneous decoder refresh (IDR) interval. Otherwise,
        the value is ignored. The IDR interval must be a multiple
        of the GopM value. It is the number of frames between
        random access points. The default is 96."
    ::= { rgbnVideoOutProgEntry 20 }

rgbnVideoOutProgTcBitRateMax OBJECT-TYPE
    SYNTAX      Unsigned32(100..160000)
    UNITS       "Kilo-bits per second (Kbps)"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutTsTransCodeEna is
        'true(1)', the maximum bitrate in kilo-bits per second.
        Otherwise, the value is ignored. The value must be less
        than or equal the value of object rgbnVideoOutTsBitrate
        for the outTS.
        For 'mpeg2(2)' format, the default value is the lower
        of 15000 Kbps and the value of rgbnVideoOutTsBitrate.
        For 'h264(3)' format, the default value is the lower
        of 8000 Kbps and the value of rgbnVideoOutTsBitrate."
    ::= { rgbnVideoOutProgEntry 21 }

rgbnVideoOutProgTcMctfEna OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutTsTransCodeEna is
        'true(1)', specifies if motion compensated temporal 
        filtering (MCTF) is enabled or disabled. Otherwise,
        the value is ignored. The values are:
          true(1) - MCTF is enabled
          false(2) - MCTF is disabled"
    DEFVAL  { true }
    ::= { rgbnVideoOutProgEntry 22 }

rgbnVideoOutProgTcTelecineProc OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutTsTransCodeEna is
        'true(1)' and the format is 'megeg2(2)', indicates that the
        source was telecine processed. Otherwise, the value is ignored.
        The telecine process converts a source feed at 24 frames per
        second (typically a film) to a feed at 30 frames per second.
        When this has occured, indicating it to transcoding process
        allows the processing to be done more efficiently."
    DEFVAL  { true }
    ::= { rgbnVideoOutProgEntry 23 }

rgbnVideoOutProgTcClosedCapType OBJECT-TYPE
    SYNTAX      INTEGER {
                    scte20(1),
                    scte21(2),
                    scte20AndScte21(3)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutTsTransCodeEna is
        'true(1)' and the format is 'mpeg2(2)', specifies the format
        used for encoding closed captioning. Otherwise, the value
        is ignored. The values are:
          scte20(1) - SCTE-20 encoding is used
          scte21(2) - SCTE-21 encoding is used"
    DEFVAL  { scte21 }
    ::= { rgbnVideoOutProgEntry 24 }

rgbnVideoOutProgTcHresType OBJECT-TYPE
    SYNTAX      INTEGER {
                    notApplicable(1),
                    followInput(2),
                    resD1(3),
                    resThreeFourthsD1(4),
                    resTwoThirdsD1(5),
                    resOneHalfD1(6)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutTsTransCodeEna is
        'true(1)', specifies the type of horizontal resolution.
        Otherwise, the value is ignored. The values are:
          notApplicable(1) - rgbnVideoOutTsTransCodeEna is 'false(2)'
          followInput(2) - used for HD (high def)
          resD1(3) - used for SD (standard def)
          resThreeFourthsD1(4) - used for SD (standard def)
          resTwoThirdsD1(5) - used for SD (standard def)
          resOneHalfD1(6) - used for SD (standard def)
        When not specified when an instance is created, the
        value is will be:
          notApplicable(1), when rgbnVideoOutTsTransCodeEna is 'false(2)'
          followInput(2), when HD
          resD1(3), when SD"
    ::= { rgbnVideoOutProgEntry 25 }

rgbnVideoOutProgTcVresType OBJECT-TYPE
    SYNTAX      INTEGER {
                    notApplicable(1),
                    followInput(2)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutTsTransCodeEna is
        'true(1)', specifies the type of vertical resolution.
        Otherwise, the value is ignored. The values are:
          notApplicable(1) - rgbnVideoOutTsTransCodeEna is 'false(2)'
          followInput(2) - used for HD (high def) & SD (standard def)
        When not specified when an instance is created, the
        value is will be:
          notApplicable(1), when rgbnVideoOutTsTransCodeEna is 'false(2)'
          followInput(2), when HD or SD"
    ::= { rgbnVideoOutProgEntry 26 }

rgbnVideoOutProgTcHresActual OBJECT-TYPE
    SYNTAX      Gauge32(0..1920)
    UNITS       "pixels"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutTsTransCodeEna is
        'true(1)' and the value of rgbnVideoOutProgOperState is
        'up(1)', specifies the actual output horizontal resolution
        in pixels. Otherwise, the value is zero."
    ::= { rgbnVideoOutProgEntry 27 }

rgbnVideoOutProgTcVresActual OBJECT-TYPE
    SYNTAX      Gauge32(0..1080)
    UNITS       "pixels"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutTsTransCodeEna is
        'true(1)' and the value of rgbnVideoOutProgOperState is
        'up(1)', specifies the actual output virtical resolution
        in pixels. Otherwise, the value is zero."
    ::= { rgbnVideoOutProgEntry 28 }

rgbnVideoOutProgTcHresSource OBJECT-TYPE
    SYNTAX      Gauge32(0..1920)
    UNITS       "pixels"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutTsTransCodeEna is
        'true(1)' and the value of rgbnVideoOutProgOperState is
        'up(1)', specifies the actual input (source) horizontal
        resolution in pixels. Otherwise, the value is zero."
    ::= { rgbnVideoOutProgEntry 29 }

rgbnVideoOutProgTcVresSource OBJECT-TYPE
    SYNTAX      Gauge32(0..1080)
    UNITS       "pixels"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutTsTransCodeEna is
        'true(1)' and the value of rgbnVideoOutProgOperState is
        'up(1)', specifies the actual input (source) virtical
        resolution in pixels. Otherwise, the value is zero."
    ::= { rgbnVideoOutProgEntry 30 }

rgbnVideoOutProgSubNoPMT OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates if program substitution is enabled for the program.
         and if the PMT needs to updated,
        The values are:
            true(1) -  No PMT is updated if no new ES is added or deleted
            false(2) - PMT is updated, it is default value.
        "
    DEFVAL  { false }
    ::= { rgbnVideoOutProgEntry 31 }

rgbnVideoOutProgTcActualBitRate OBJECT-TYPE
    SYNTAX      Unsigned32(0..160000)
    UNITS       "Kilo-bits per second (Kbps)"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The actual bit rate that transcode is used for video ES"
    ::= { rgbnVideoOutProgEntry 32 }

rgbnVideoOutProgTcAspectRatio OBJECT-TYPE
    SYNTAX      INTEGER {
                    automatic(1), 
                    ratio4x3(2),
                    ratio16x9(3)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates the aspect ratio of an output program"
    ::= { rgbnVideoOutProgEntry 33 }

rgbnVideoOutProgTcPipResolution OBJECT-TYPE
    SYNTAX      INTEGER {
                    notApplicable(1),
                    pipResolution128x96(20),
                    pipResolution96x96(21),
                    pipResolution192x192(27),
                    pipResolution352xvResHalfD1(28)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates the pip resolution of an output program"
    ::= { rgbnVideoOutProgEntry 34 }

rgbnVideoOutProgTcProfile OBJECT-TYPE
    SYNTAX      INTEGER {
                    mainHigh(1),
                    baseline(2),
                    mainOnly(3)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates the pip profile of an output program"
    ::= { rgbnVideoOutProgEntry 35 }

rgbnVideoOutProgTcFieldRate OBJECT-TYPE
    SYNTAX      INTEGER {
                    fieldFrameRateFull(1),
                    fieldFrameRateHalf(2)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates the field rate of an output program"
    ::= { rgbnVideoOutProgEntry 36 }

rgbnVideoOutProgTcIdrAlignment OBJECT-TYPE
    SYNTAX      INTEGER {
                    encodingNoIdrAlignment(1),
                    encodingIdrAlignment(2)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates the idr alignment of an output program"
    ::= { rgbnVideoOutProgEntry 37 }


rgbnVideoOutProgTcMode               OBJECT-TYPE
    SYNTAX      INTEGER {
                    iptvMode(1),
                    iptvAvMode(2)
                }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates Transcoding Mode"
    DEFVAL  { iptvMode }
    ::= { rgbnVideoOutProgEntry 38 }

rgbnVideoOutProgTcMbrGroupId        OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "When the value of object rgbnVideoOutProgTcMode is
        iptvAvMode', the value is used. Otherwise
        the value is ignored. The value indicates MBR Group
        ID."
    DEFVAL  { 0 }
    ::= { rgbnVideoOutProgEntry 39 }
    
rgbnVideoOutProgTcA6SubId           OBJECT-TYPE
    SYNTAX      Unsigned32 (0..4)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutProgTcMode is
        'iptvAvMode', the value is used. Otherwise
         the value is 0. The value indicates the order
         of rgbnVideoOutProgTcRpmResolution within a single
         MBR Group ID. The lowest value (ie: 1) is highest
         resolution. The highest value (ie: 4) is lowest
         resolution."
    DEFVAL  { 0 }
    ::= { rgbnVideoOutProgEntry 40 }
    
rgbnVideoOutProgTcRpmResolution      OBJECT-TYPE
    SYNTAX      INTEGER {
                    yellowRes1280x720(4),
                    yellowRes960x720(5),
                    blueRes640x480(9),
                    redRes480x352(10),         
                    redRes480x320(11),
                    redRes320x240(12),
                    redRes624x352(13),
                    redRes480x272(14),
                    redRes416x240(15),
                    blueRes848x480(17),
                    redRes320x176(18),
                    redRes128x96(19),
                    redRes96x96(20),
                    yellowRes640x720(25),
                    redRes192x192(26),
                    redRes352x240(27),
                    yellowRes960x540(28),
                    blueRes864x486(29),                    
                    redRes640x360(30),
                    redRes320x180(31)
                }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutProgTcMode is
        'iptvAvMode', the value is used. Otherwise, the value
         is ignored. The value indicates resolution within a 
         single MBR group ID, It has its own rule of resolution
         as part of combination within a 4 row of entries within
         a MBR Group ID.
         
         For example,
          Rule  A6                     A6     
               SubID  resolution      SubID   resolution
               
           1    1    yellowRes<any>,    2     blueRes<any>,
                3    redRes<any>,       4     redRes<any>
                
           2    1    yellowRes<any>     2     redRes<any>,
                3    redRes<any>,       4     redRes<any>
                
           3    1    blueRes<any>,      2     blueRes<any>, 
                3    redRes<any>,       4     redRes<any>
                
           4    1    blueRes<any>,      2     redRes<any>,  
                2    redRes<any>,       4     redRes<any>
                
           5    1    redRes<any>,       2     redRes<any>,  
                3    redRes<any>,       4     redRes<any>
         "
    ::= { rgbnVideoOutProgEntry 41 }
    

rgbnVideoOutProgTcAudioBitRate       OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "Kilo-bits per second (Kbps)"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutProgTcMode is
        'iptvAvMode', the value is used. Otherwise the value
         is 0. The value indicates as Audio Bitrate."
    DEFVAL  { 0 }
    ::= { rgbnVideoOutProgEntry 42 }
    
rgbnVideoOutProgTcAudioCodec         OBJECT-TYPE
    SYNTAX      INTEGER {
                    aacLc(1),
                    heAac(2),
                    heAacv2(3),
                    mpeg1L2(9),
                    mpeg2L2(11),
                    ac3(13)
                 }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutProgTcMode is
        'iptvAvMode', the value is used. Otherwise the value 
        is ignore. The Audio Codec is configured the output 
        Audio Codec for all Elementary Streams."
    DEFVAL  { aacLc }
    ::= { rgbnVideoOutProgEntry 43 }
    
rgbnVideoOutProgTcAudioChannel       OBJECT-TYPE
    SYNTAX      INTEGER {
                    stereo(1),
                    mono(2),
                    surround51(3)
                 }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutProgTcMode is
        'iptvAvMode', the value is used. Otherwise the value
        is ignore. The Audio Channel is configured the output
        Audio Channel for all Elementary Streams."
    DEFVAL  { stereo }
    ::= { rgbnVideoOutProgEntry 44 }
    
rgbnVideoOutProgTcAudioSamplingRate  OBJECT-TYPE
    SYNTAX      INTEGER {
                    rate48000(1),
                    rate44100(2),
                    rate32000(3),
                    rate24000(4),
                    rate22050(5),
                    rate16000(6),
                    rate11025(7),
                    rate8000(8),
                    rate12000(9)
                 }
    UNITS       "KHz"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutProgTcMode is
        'iptvAvMode', the value is used. Otherwise the value
        is ignore. The Audio Sampling Rate is configured the
        output Audio Channel for all Elementary Streams."
    DEFVAL  { rate48000 }
    ::= { rgbnVideoOutProgEntry 45 }
    
rgbnVideoOutProgTcAudioGain          OBJECT-TYPE
    SYNTAX      Integer32
    UNITS       "dB"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutProgTcMode is
        'iptvAvMode', the value is used. Otherwise the value
        is ignore. The Audio Gain is configured the output 
        Audio Channel for all Elementary Streams."
    DEFVAL  { 0 }
    ::= { rgbnVideoOutProgEntry 46 }
    
rgbnVideoOutProgTcActiveFormat       OBJECT-TYPE
    SYNTAX      INTEGER {
                    forceTo16x9LetterBox(1),
                    forceTo4x3CenterCut(2),
                    followInputUseFailback16x9(3),
                    followInputUseFailback4x3(4)
                 }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutProgTcMode is
        'iptvMode', the value is used. Otherwise the value is
        ignore. The values are:
           forceTo16x9(1) - Enforce the output Active Format
                            to 16x9 Letterbox.
           forceTo4x3CenterCut(2) - Enforce the output Active
                            Format to 4x3 Centercut.
           followInputUseFailback16x9(3) - Follow Input
                            Active Format. If there is
                            no Active Format, it will
                            failback to 16x9 Letterbox.
           followInputUseFailback16x9(4) - Follow Input
                            Active Format. If there is
                            no Active Format, it will
                            failback to 4x3 Centercut.
           "
    DEFVAL  { forceTo16x9LetterBox } 
    ::= { rgbnVideoOutProgEntry 47 }
    
rgbnVideoOutProgTcDisableAFD         OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutProgTcMode is
        'iptvMode', the value is used. Otherwise the value
        is ignore. The values are:
         
          true(1) - indicates to examine Active Format code
                     from header
          false(2) - indicates of no Active Format code.
         "
    DEFVAL  { false }
    ::= { rgbnVideoOutProgEntry 48 }
    
rgbnVideoOutProgTcRuntimeErrorStr OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only 
    STATUS      current
    DESCRIPTION
       "When the value of object rgbnVideoOutProgTcRuntimeErrorStr 
        is returned the runtime Failure Reason.  "  
    ::= { rgbnVideoOutProgEntry 49 }

rgbnVideoOutProgTcAudioPassthrough OBJECT-TYPE
    SYNTAX      INTEGER {
                    aacLc(1),
                    heAac(2),
                    heAacv2(3),
                    mpeg1L2(9),
                    mpeg2L2(11),
                    ac3(13),
                    passthru(256)
                 }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutProgTcMode is
        'iptvAvMode', the value is used. Otherwise the value
        is ignore. The Audio Codec is configured the output
        Audio Passthrough Codec for all Elementary Streams."
    DEFVAL  { passthru }
    ::= { rgbnVideoOutProgEntry 50 }

rgbnVideoOutProgTcAudioStartPid OBJECT-TYPE
    SYNTAX      RgbnMpegPid(16 | 48..8190)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The Audio PID value requires to be higher than zero,
         when rgbnVideoOutProgTcAudioPassthrough is not
         none(255)."
    ::= { rgbnVideoOutProgEntry 51 }

rgbnVideoOutProgTcCloseCaptionStd OBJECT-TYPE
    SYNTAX      INTEGER {
                    notApplicable(1),
                    cc608(2),
                    cc708(3)
                 }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "When the value of object rgbnVideoOutProgTcMode is
        'iptvAvMode', the value is used. Otherwise the value
        is ignore. "
    DEFVAL  { cc608 }
    ::= { rgbnVideoOutProgEntry 52 }

--rgbnVideoOutProgSrcType OBJECT-TYPE
--    SYNTAX      INTEGER {
--                    noSrc(1),
--                    primInProg(2),
--                    bkupInProg(3),
--                    dpi(4),
--                    primSubInProg(5),
--                    bkupSubInProg(6)
--                    }
--    MAX-ACCESS  read-only
--    STATUS      current
--    DESCRIPTION
--        "Specifies the type of the input source for the outProg. The
--        values are:
--            noSrc(1) - no source is currently active or configured
--            primInProg(2) - the source is the primary inProg
--            bkupInProg(3) - the source is the backup inProg
--            dpi(4) - the source is a DPI stream
--            primSubInProg(5) - the source is the primary substituted prog
--            bkupSubInProg(6) - the source is the backup substituted prog
--
--        Note that that object rgbnVideoOutProgOperState specifies
--        whether or not output is being generated."
--    ::= { rgbnVideoOutProgEntry X }
--
--rgbnVideoOutProgSrcGrmIndex OBJECT-TYPE
--    SYNTAX      RgbnGrmIndexOrZero
--    MAX-ACCESS  read-only
--    STATUS      current
--    DESCRIPTION
--        "Either the value zero to specify no grooming session, or
--        the index of a grooming session to specify the source for
--        the output program."
--    ::= { rgbnVideoOutProgEntry Y }

-- +++++++++++++++++++++++++++++++++++++++++++

rgbnVideoOutEsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RgbnVideoOutEsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table listing the elementary streams (ES) in each output
        program (outProg) within each output TS (outTS). The number
        of entries is dependent on the actual outProgs that have
        been configured and are active, the number of ESs that
        have been created by management operations, and the ESs
        from active grooming sessions.
        
        Note that an active groom tries to reuse any ESs that
        have been created by management operations."
    ::= { rgbnVideoObjects 10 }

rgbnVideoOutEsEntry OBJECT-TYPE
    SYNTAX      RgbnVideoOutEsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A row in the output elementary stream (outES) table. Row creation
        and deletion is supported via SNMP operations using object
        rgbnVideoOutEsRowStatus. Only the 'createAndGo' and 'destroy'
        operations are supported. This table extends table
        rgbnVideoOutProgTable (and rgbnVideoOutTsTable). Thus, the outProg
        must exist before entries exist or can be created in this table.
        Deletion of an outProg will delete all associated ES entries.
        Rows other than those created via management operations come and
        go due to active grooming sessions."
    INDEX { rgbnVideoOutTsIndex, rgbnVideoOutProgIndex, rgbnVideoOutEsIndex }
    ::= { rgbnVideoOutEsTable 1 }

RgbnVideoOutEsEntry ::= SEQUENCE {
    rgbnVideoOutEsIndex         RgbnEsIndex,
    rgbnVideoOutEsType          RgbnEsType,
    rgbnVideoOutEsStreamType    RgbnEsStreamType,
    rgbnVideoOutEsPid           RgbnMpegPid,
    rgbnVideoOutEsPmtOrder      Unsigned32,
    rgbnVideoOutEsScrambled     TruthValue,
    rgbnVideoOutEsRowStatus     RowStatus,
    rgbnVideoOutEsMgmtCre       TruthValue,
    rgbnVideoOutEsLang          OCTET STRING,
    rgbnVideoOutEsStreamSubType RgbnEsStreamSubType
    }

rgbnVideoOutEsIndex OBJECT-TYPE
    SYNTAX      RgbnEsIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The elementary stream (ES) index in the outProg."
    ::= { rgbnVideoOutEsEntry 1 }

rgbnVideoOutEsType OBJECT-TYPE
    SYNTAX      RgbnEsType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The type of the outES."
    ::= { rgbnVideoOutEsEntry 2 }

rgbnVideoOutEsStreamType OBJECT-TYPE
    SYNTAX      RgbnEsStreamType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The stream type of the outES."
    ::= { rgbnVideoOutEsEntry 3 }

rgbnVideoOutEsPid OBJECT-TYPE
    SYNTAX      RgbnMpegPid
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The PID for packets in the outES."
    ::= { rgbnVideoOutEsEntry 4 }

rgbnVideoOutEsPmtOrder OBJECT-TYPE
    SYNTAX      Unsigned32(1..32)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The one-based order (index) of the outES in the PMT for
        the program. On row creation, a value may be specified
        and may not be the same as that used by an existing outES
        for the same outProg. When the row exists, object
        rgbnVideoOutProgSetPmtOrder must be used to change
        the order of ESs in an outProg, since this object may
        not be modified."
    ::= { rgbnVideoOutEsEntry 5 }

rgbnVideoOutEsScrambled OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indicates if the data of the outES is encrypted (which is
        also called 'scrambled'). The values are:
            true(1) - the data is encrypted
            false(2) - the data is not encrypted"
    ::= { rgbnVideoOutEsEntry 6 }

rgbnVideoOutEsRowStatus OBJECT-TYPE
    SYNTAX      RowStatus { active(1), createAndGo(4), destroy(6) }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The status of the row. Only 'one-shot creation' is allowed."
    ::= { rgbnVideoOutEsEntry 7 }

rgbnVideoOutEsMgmtCre OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indicates if the ES was created by management operation,
        or by the grooming session. The values are:
          true(1) - ES created by management operation
          false(2) - ES created the grooming session"
    ::= { rgbnVideoOutEsEntry 8 }

rgbnVideoOutEsLang OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(0 | 3))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Specifies the language code for the outES. The value is
        a zero length string when no language is associated with
        the outES. Otherwise, the value must be 3 characters for
        a language defined in ISO 639-2. For example, the french
        language has the 3 character code 'fre'."
    DEFVAL { ''h }
    ::= { rgbnVideoOutEsEntry 9 }

rgbnVideoOutEsStreamSubType OBJECT-TYPE
    SYNTAX      RgbnEsStreamSubType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Specifies the outES stream subtype, if any.
        The value must be consistent with the value for object
        rgbnVideoOutEsStreamType."
    DEFVAL { none }
    ::= { rgbnVideoOutEsEntry 10 }

-- +++++++++++++++++++++++++++++++++++++++++++

rgbnVideoGrmTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RgbnVideoGrmEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of grooming sessions. A grooming session maps
        selected elementary streams (ES) from an input program (inProg)
        to an output program (outProg). The current version also
        contains a single schedule entry that specifies when
        the session starts and stops, and operational attributes
        of an active grooming session. The number of entries is
        configuration dependent, and the maximum number of entries
        is implementation dependent."
    ::= { rgbnVideoObjects 11 }

rgbnVideoGrmEntry OBJECT-TYPE
    SYNTAX      RgbnVideoGrmEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A row in the grooming (Grm) table. Row creation
        and deletion is supported via SNMP operations via object
        rgbnVideoGrmRowStatus. Only the 'createAndGo' and
        'destroy' operations are supported."
    INDEX { rgbnVideoGrmIndex }
    ::= { rgbnVideoGrmTable 1 }

RgbnVideoGrmEntry ::= SEQUENCE {
    rgbnVideoGrmIndex           RgbnGrmIndex,
    rgbnVideoGrmRowStatus       RowStatus,
    rgbnVideoGrmInTsIndex       RgbnTsIndex,
    rgbnVideoGrmInProgIndex     RgbnProgIndex,
    rgbnVideoGrmOutTsIndex      RgbnTsIndex,
    rgbnVideoGrmOutProgIndex    RgbnProgIndex,
    rgbnVideoGrmScte35CueFwd    TruthValue,
    rgbnVideoGrmBitrateMin      Unsigned32,
    rgbnVideoGrmBitrateMax      Unsigned32,
    rgbnVideoGrmRateShapeType   INTEGER,
    rgbnVideoGrmStartTime       Unsigned32,
    rgbnVideoGrmEndTime         Unsigned32,
    rgbnVideoGrmEsExclude       RgbnPidList,
    rgbnVideoGrmSchedState      INTEGER,
    rgbnVideoGrmBkupUse         TruthValue,
    rgbnVideoGrmBkupInTsIndex   RgbnTsIndexOrZero,
    rgbnVideoGrmBkupInProgIndex RgbnProgIndexOrZero,
    rgbnVideoGrmBkupRecType     INTEGER,
    rgbnVideoGrmMakeUnref       TruthValue,
    rgbnVideoGrmNumConfigAudio  INTEGER,
    rgbnVideoGrmNumConfigData   INTEGER
--    rgbnVideoGrmBkupEsExclude   RgbnPidList
    }

rgbnVideoGrmIndex OBJECT-TYPE
    SYNTAX      RgbnGrmIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index of the grooming session."
    ::= { rgbnVideoGrmEntry 1 }

rgbnVideoGrmRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The status of the row. Only 'one-shot creation' is allowed."
    ::= { rgbnVideoGrmEntry 2 }

rgbnVideoGrmInTsIndex OBJECT-TYPE
    SYNTAX      RgbnTsIndex
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The index of an inTS that together with the value of object
        rgbnVideoGrmInProgIndex identifies an inProg, which
        provides ESs for an outProg."
    ::= { rgbnVideoGrmEntry 3 }

rgbnVideoGrmInProgIndex OBJECT-TYPE
    SYNTAX      RgbnProgIndex
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The index of an inProg that together with the value of object
        rgbnVideoGrmInTsIndex identifies an inProg, which provides
        ESs for an outProg."
    ::= { rgbnVideoGrmEntry 4 }

rgbnVideoGrmOutTsIndex OBJECT-TYPE
    SYNTAX      RgbnTsIndex
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The index of an outTS that together with the value of object
        rgbnVideoGrmOutProgIndex identifies an outProg, which is
        the target of ESs from an inProg."
    ::= { rgbnVideoGrmEntry 5 }

rgbnVideoGrmOutProgIndex OBJECT-TYPE
    SYNTAX      RgbnProgIndex
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The index of an outProg that together with the value of object
        rgbnVideoGrmOutTsIndex identifies an outProg, which is
        the target of ESs from an inProg."
    ::= { rgbnVideoGrmEntry 6 }

rgbnVideoGrmScte35CueFwd OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates whether or not 'SCTE-30 cue tones' are forwarded
        from the inProg to the outProg. The values are:
            true(1) - cue tones are forwarded
            false(2) - cue tones are not forwarded
        Note that if the inProg does not use SCTE-30 cue tones,
        then none will be present in the outProg."
    ::= { rgbnVideoGrmEntry 7 }

rgbnVideoGrmBitrateMin OBJECT-TYPE
    SYNTAX      Unsigned32(100..160000)
    UNITS       "Kilo-bits per second (Kbps)"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The minimum bitrate in kilo-bits per second.
        The value must be less than or equal the value
        of object rgbnVideoGrmBitrateMax."
    ::= { rgbnVideoGrmEntry 8 }

rgbnVideoGrmBitrateMax OBJECT-TYPE
    SYNTAX      Unsigned32(100..160000)
    UNITS       "Kilo-bits per second (Kbps)"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The maximum bitrate in kilo-bits per second.
        The value must be less than or equal the value
        of object rgbnVideoOutTsBitrate for the outTS."
    ::= { rgbnVideoGrmEntry 9 }

rgbnVideoGrmRateShapeType OBJECT-TYPE
    SYNTAX      INTEGER {
                    minus8(1),
                    minus7(2),
                    minus6(3),
                    minus5(4),
                    minus4(5),
                    minus3(6),
                    minus2(7),
                    minus1(8),
                    neutral(9),
                    plus1(10),
                    plus2(11),
                    plus3(12),
                    plus4(13),
                    plus5(14),
                    plus6(15),
                    plus7(16),
                    plus8(17),
                    noRateShape(18),
                    transratorBypass(19),
                    handleAsData(20)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Determines the system behavior with respect to video quality
        if the actual bandwidth of the outTS exceeds the configured
        bandwidth. There are 17 priority levels associated with each
        grooming session. These priority levels range from 'minus8(1)'
        to 'plus8(17)'. In addition, can specify that no rate shaping
        is to be applied via value 'noRateShape(18)', no processing
        by the transrator via value 'transratorBypass(19)', and
        to process as data by value 'handleAsData(20)'. When rate shaping
        is needed, the quality of output video configured with a higher
        priority suffers less than the quality of output video configured
        with lower priority. In case that grooming sessions have the
        same priority, the system may arbitrarily choose one session
        over the other to suffer a loss of quality."
    ::= { rgbnVideoGrmEntry 10 }

rgbnVideoGrmStartTime OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "Seconds"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The start time for the grooming session. This is encoded in
        'Unix time', which is the number of seconds elapsed since midnight
        proleptic Coordinated Universal Time (UTC) of January 1, 1970,
        not counting leap seconds. However, the value zero means now."
    ::= { rgbnVideoGrmEntry 11 }

rgbnVideoGrmEndTime OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "Seconds"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The end time for the grooming session. This is encoded in
        'Unix time', which is number of  seconds elapsed since midnight
        proleptic Coordinated Universal Time (UTC) of January 1, 1970,
        not counting leap seconds. However, the value zero means never."
    ::= { rgbnVideoGrmEntry 12 }

rgbnVideoGrmEsExclude OBJECT-TYPE
    SYNTAX      RgbnPidList
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Specifies which ESs from the inProg to exclude (not include)
        as ESs in the outProg identified by their PID values. When the
        value is a zero length string, then no ESs are excluded.
        Otherwise, the value is a list of PIDs."
    DEFVAL { ''H }
    ::= { rgbnVideoGrmEntry 13 }

rgbnVideoGrmSchedState OBJECT-TYPE
    SYNTAX      INTEGER {
                    primaryActive(1),
                    backupActive(2),
                    scheduled(3),
                    expired(4)
                    }
-- TODO: add value for program substitution
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The state of the grooming session schedule. The values are:
            primaryActive(1) - session within the start and end times
                        and using the primary program
            backupActive(2) - session within the start and end times
                        and using the backup program
            scheduled(3) - session not yet at start time
            expired(4) - the session end time has passed by

        TODO: add info for progam substitution"
    ::= { rgbnVideoGrmEntry 14 }

rgbnVideoGrmBkupUse OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indicates use of a backup program. The values are:
            true(1) - use a backup program
            false(2) - no backup program
        When a backup program is being used, the values for
        objects rgbnVideoGrmBkupInTsIndex, rgbnVideoGrmBkupInProgIndex,
        rgbnVideoGrmBkupEsExclude, and rgbnVideoGrmBkupRecType
        are used to specify the backup program and to indicate
        what action to take on recovery of the primary program
        when using the backup program.

        When specified (and the backup program is healthy),
        a switch will occur from primary to backup when
        any of the following failures are encountered:
          1) PMT timeout - the PMT of the primary program has
                            not been received in 2 seconds
          2) Video underflow - the video ES for the program
                            has no video packets
          3) After system reboot (or a system redundancy switch)
                and the primary input remains unavailable for
                180 seconds
       The following criteria are used to determine if the backup
       program is healthy:
          1) PMT has been received and has not been timed out
          2) The ES count in the backup program is greater
             than zero. (Note: until the backup is used, it
             cannot be determined if the video ES is healthy)
             
      TODO: Add additional description to include interaction with
            program substitution and backup progam configured for input
            program.
       "
    DEFVAL { false }
    ::= { rgbnVideoGrmEntry 15 }

rgbnVideoGrmBkupInTsIndex OBJECT-TYPE
    SYNTAX      RgbnTsIndexOrZero
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Either the value zero to specify no inTS, or the
        index of an inTS that together with the value of
        object rgbnVideoGrmBkupInProgIndex identifies an inProg,
        which is the backup program for the grooming."
    ::= { rgbnVideoGrmEntry 16 }

rgbnVideoGrmBkupInProgIndex OBJECT-TYPE
    SYNTAX      RgbnProgIndexOrZero
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Either the value zero to specify no inProg, or the
        index of an inProg that together with the value of
        object rgbnVideoGrmBkupInTsIndex identifies an inProg,
        which is the backup program for the grooming."
    ::= { rgbnVideoGrmEntry 17 }

rgbnVideoGrmBkupRecType OBJECT-TYPE
    SYNTAX      INTEGER {
                    auto(1),
                    manual(2)
                    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The behavior to take on the recovery of the health of the
        primary program when using the backup program. The values
        are:
            auto(1)- switch back to using the primary program
                        when it is healthy (also called revertive)
            manual(2) - only switch to the primary program
                        when commanded by management action
                        (also called non-revertive)

       The following criteria are used to determine if the primary
       program is healthy:
          1) PMT has been received and has not been timed out
          2) The ES count in the backup program is greater
             than zero. (Note: until the primary is used, it
             cannot be determined if the video ES is healthy)

        The table rgbnCoreActionTable is used to perform a
        manual switch on a single grooming session from
        primary to backup or backup to primary, and to attempt
        to switch from each backup to its corresponding
        primary."
    DEFVAL  { auto }
    ::= { rgbnVideoGrmEntry 18 }

rgbnVideoGrmMakeUnref OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Determines if the ESs in the outProg will be 'unreferenced'
        or contained in the output program. The value may be 'true(1)'
        only when the inProg is a 'ghost' program.
        The values are:
            true(1) - make the ESs in the outProg unreferenced, thus
                        effectively making the outProg a 'ghost program'
                        and not included in the outTS's PAT
            false(2) - no modification to the outProg"
    DEFVAL  { false }
    ::= { rgbnVideoGrmEntry 19 }

rgbnVideoGrmNumConfigAudio OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Specifies number of Audio that are included in this output
         program. "
    ::= { rgbnVideoGrmEntry 20 }

rgbnVideoGrmNumConfigData OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Specifies number of Data that are included in this output
         program. "
    ::= { rgbnVideoGrmEntry 21 }    

--rgbnVideoGrmBkupEsExclude OBJECT-TYPE
--    SYNTAX      RgbnPidList
--    MAX-ACCESS  read-create
--    STATUS      current
--    DESCRIPTION
--        "Specifies which ESs from the backup inProg to exclude (not
--        include) as ESs in the outProg identified by their PID values.
--        When the value is a zero length string, then no ESs are excluded.
--        Otherwise, the value is a list of PIDs."
--    DEFVAL  { ''H }
--    ::= { rgbnVideoGrmEntry 22 }

-- +++++++++++++++++++++++++++++++++++++++++++

rgbnVideoDvbLocalTot OBJECT IDENTIFIER ::= { rgbnVideoObjects 12 }
-- These objects are used to generate the values in a locally
-- created DVB TOT, which specify info about the time zone
-- and start and end of daylight saving time

rgbnVideoDvbTotCountryCodeAlpha3 OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(3))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The country code specified in ISO 3166-1 alpha-3
        coding format, which is 3 uppercase letters. ISO 3166-1
        defines three different ways of identifying a country, 
        which are 2 letters (called alpha-2), three letters
        (called alpha-3), and 3 digits (called numeric-3).
        Examples of alpha-3 are: USA for the United States
        of America, GBR for United Kingdom, and IDN for
        the Republic of Indonesia."
    REFERENCE
        "EN 300 468: DVB Specification of Service Information
        in DVB Systems, section 6.2.20"
    ::= { rgbnVideoDvbLocalTot 1 }

rgbnVideoDvbTotCountryRegionId OBJECT-TYPE
    SYNTAX      Unsigned32(0..60)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The country region identifies the zone within the country.
        The value is zero when there are no zones within the country.
        Otherwise, the value ranges from 1 to the max number of zones
        in the country. (See country specific standards for region
        ID assignments.)"
    REFERENCE
        "EN 300 468: DVB Specification of Service Information
        in DVB Systems, section 6.2.20"
    ::= { rgbnVideoDvbLocalTot 2 }

rgbnVideoDvbTotDstOffset OBJECT-TYPE
    SYNTAX      INTEGER {
                    minus2hr(1),
                    minus1hr30min(2),
                    minus1hr(3),
                    minus30min(4),
                    zero(5),
                    plus30min(6),
                    plus1hr(7),
                    plus1hr30min(8),
                    plus2hr(9)
                    }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Indicates if daylight saving time (dst) is observed, and if
        so, then the change from standard time in the region. A value
        of 'zero(5)' indicates that dst is not observed. The typical
        value would be 'minus1hr(3)' to indicate that when dst is
        observed, the time would be 1 hour earlier than standard
        time. Note that when the value is 'zero(5)', the values for
        the objects that specify the start and end of dst are not
        used, which are rgbnVideoDvbTotDstStartSun,
        rgbnVideoDvbTotDstStartMonth, rgbnVideoDvbTotDstStartHour,
        rgbnVideoDvbTotDstStartMin, rgbnVideoDvbTotDstEndSun,
        rgbnVideoDvbTotDstEndMonth, rgbnVideoDvbTotDstEndHour,
        and rgbnVideoDvbTotDstEndMin"
    ::= { rgbnVideoDvbLocalTot 3 }

rgbnVideoDvbTotDstStartSun OBJECT-TYPE
    SYNTAX      Unsigned32(1..4)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The Sunday in the month to start daylight saving time."
    ::= { rgbnVideoDvbLocalTot 4 }

rgbnVideoDvbTotDstStartMonth OBJECT-TYPE
    SYNTAX      INTEGER {
                    jan(1),
                    feb(2),
                    mar(3),
                    apr(4),
                    may(5),
                    jun(6),
                    jul(7),
                    aug(8),
                    sep(9),
                    oct(10),
                    nov(11),
                    dec(12)
                    }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The month to start daylight saving time."
    ::= { rgbnVideoDvbLocalTot 5 }

rgbnVideoDvbTotDstStartHour OBJECT-TYPE
    SYNTAX      Unsigned32(0..23)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The hour using a 24-hour clock to start daylight saving time."
    ::= { rgbnVideoDvbLocalTot 6 }

rgbnVideoDvbTotDstStartMin OBJECT-TYPE
    SYNTAX      Unsigned32(0..59)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The minute to start daylight saving time."
    ::= { rgbnVideoDvbLocalTot 7 }

rgbnVideoDvbTotDstEndSun OBJECT-TYPE
    SYNTAX      Unsigned32(1..4)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The Sunday in the month to end daylight saving time."
    ::= { rgbnVideoDvbLocalTot 8 }

rgbnVideoDvbTotDstEndMonth OBJECT-TYPE
    SYNTAX      INTEGER {
                    jan(1),
                    feb(2),
                    mar(3),
                    apr(4),
                    may(5),
                    jun(6),
                    jul(7),
                    aug(8),
                    sep(9),
                    oct(10),
                    nov(11),
                    dec(12)
                    }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The month to end daylight saving time."
    ::= { rgbnVideoDvbLocalTot 9 }

rgbnVideoDvbTotDstEndHour OBJECT-TYPE
    SYNTAX      Unsigned32(0..23)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The hour using a 24-hour clock to end daylight saving time."
    ::= { rgbnVideoDvbLocalTot 10 }

rgbnVideoDvbTotDstEndMin OBJECT-TYPE
    SYNTAX      Unsigned32(0..59)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The minute to end daylight saving time."
    ::= { rgbnVideoDvbLocalTot 11 }

END
