Play-/tools/MediaCenter/Source/VideoStream_ReadPictureCodingExtension.cpp
2018-04-30 21:01:23 +01:00

93 lines
4.7 KiB
C++

#include "VideoStream_ReadPictureCodingExtension.h"
using namespace VideoStream;
ReadPictureCodingExtension::ReadPictureCodingExtension()
{
m_readPictureCodingExtensionProgram.InsertCommand(
ReadPictureCodingExtensionStructure::COMMAND(ReadPictureCodingExtensionStructure::COMMAND_TYPE_READ8, 4, &PICTURE_CODING_EXTENSION::fcode00));
m_readPictureCodingExtensionProgram.InsertCommand(
ReadPictureCodingExtensionStructure::COMMAND(ReadPictureCodingExtensionStructure::COMMAND_TYPE_READ8, 4, &PICTURE_CODING_EXTENSION::fcode01));
m_readPictureCodingExtensionProgram.InsertCommand(
ReadPictureCodingExtensionStructure::COMMAND(ReadPictureCodingExtensionStructure::COMMAND_TYPE_READ8, 4, &PICTURE_CODING_EXTENSION::fcode10));
m_readPictureCodingExtensionProgram.InsertCommand(
ReadPictureCodingExtensionStructure::COMMAND(ReadPictureCodingExtensionStructure::COMMAND_TYPE_READ8, 4, &PICTURE_CODING_EXTENSION::fcode11));
m_readPictureCodingExtensionProgram.InsertCommand(
ReadPictureCodingExtensionStructure::COMMAND(ReadPictureCodingExtensionStructure::COMMAND_TYPE_READ8, 2, &PICTURE_CODING_EXTENSION::intraDcPrecision));
m_readPictureCodingExtensionProgram.InsertCommand(
ReadPictureCodingExtensionStructure::COMMAND(ReadPictureCodingExtensionStructure::COMMAND_TYPE_READ8, 2, &PICTURE_CODING_EXTENSION::pictureStructure));
m_readPictureCodingExtensionProgram.InsertCommand(
ReadPictureCodingExtensionStructure::COMMAND(ReadPictureCodingExtensionStructure::COMMAND_TYPE_READ8, 1, &PICTURE_CODING_EXTENSION::topFieldFirst));
m_readPictureCodingExtensionProgram.InsertCommand(
ReadPictureCodingExtensionStructure::COMMAND(ReadPictureCodingExtensionStructure::COMMAND_TYPE_READ8, 1, &PICTURE_CODING_EXTENSION::framePredFrameDct));
m_readPictureCodingExtensionProgram.InsertCommand(
ReadPictureCodingExtensionStructure::COMMAND(ReadPictureCodingExtensionStructure::COMMAND_TYPE_READ8, 1, &PICTURE_CODING_EXTENSION::concealmentMotionVectors));
m_readPictureCodingExtensionProgram.InsertCommand(
ReadPictureCodingExtensionStructure::COMMAND(ReadPictureCodingExtensionStructure::COMMAND_TYPE_READ8, 1, &PICTURE_CODING_EXTENSION::quantizerScaleType));
m_readPictureCodingExtensionProgram.InsertCommand(
ReadPictureCodingExtensionStructure::COMMAND(ReadPictureCodingExtensionStructure::COMMAND_TYPE_READ8, 1, &PICTURE_CODING_EXTENSION::intraVlcFormat));
m_readPictureCodingExtensionProgram.InsertCommand(
ReadPictureCodingExtensionStructure::COMMAND(ReadPictureCodingExtensionStructure::COMMAND_TYPE_READ8, 1, &PICTURE_CODING_EXTENSION::alternateScan));
m_readPictureCodingExtensionProgram.InsertCommand(
ReadPictureCodingExtensionStructure::COMMAND(ReadPictureCodingExtensionStructure::COMMAND_TYPE_READ8, 1, &PICTURE_CODING_EXTENSION::repeatFirstField));
m_readPictureCodingExtensionProgram.InsertCommand(
ReadPictureCodingExtensionStructure::COMMAND(ReadPictureCodingExtensionStructure::COMMAND_TYPE_READ8, 1, &PICTURE_CODING_EXTENSION::chroma420Type));
m_readPictureCodingExtensionProgram.InsertCommand(
ReadPictureCodingExtensionStructure::COMMAND(ReadPictureCodingExtensionStructure::COMMAND_TYPE_READ8, 1, &PICTURE_CODING_EXTENSION::progressiveFrame));
m_readPictureCodingExtensionProgram.InsertCommand(
ReadPictureCodingExtensionStructure::COMMAND(ReadPictureCodingExtensionStructure::COMMAND_TYPE_READ8, 1, &PICTURE_CODING_EXTENSION::compositeDisplayFlag));
//if (composite_display_flag)
//{
// v_axis = Get_Bits(1);
// field_sequence = Get_Bits(3);
// sub_carrier = Get_Bits(1);
// burst_amplitude = Get_Bits(7);
// sub_carrier_phase = Get_Bits(8);
//}
}
ReadPictureCodingExtension::~ReadPictureCodingExtension()
{
}
void ReadPictureCodingExtension::Reset()
{
m_programState = STATE_INIT;
}
void ReadPictureCodingExtension::Execute(void* context, Framework::CBitStream& stream)
{
MPEG_VIDEO_STATE* state(reinterpret_cast<MPEG_VIDEO_STATE*>(context));
PICTURE_CODING_EXTENSION& pictureCodingExtension(state->pictureCodingExtension);
while(1)
{
switch(m_programState)
{
case STATE_INIT:
goto Label_Init;
case STATE_READSTRUCT:
goto Label_ReadStruct;
case STATE_DONE:
goto Label_Done;
default:
assert(0);
}
Label_Init:
m_readPictureCodingExtensionProgram.Reset();
m_programState = STATE_READSTRUCT;
continue;
Label_ReadStruct:
m_readPictureCodingExtensionProgram.Execute(&pictureCodingExtension, stream);
assert(pictureCodingExtension.compositeDisplayFlag == 0);
assert(pictureCodingExtension.pictureStructure == 3);
m_programState = STATE_DONE;
continue;
Label_Done:
return;
}
}