00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00057
00058
00059
00060 #ifndef __MX_DIAGNOSTICSMXPEGTILERECEIVER_H__
00061 #define __MX_DIAGNOSTICSMXPEGTILERECEIVER_H__
00062
00063
00064
00065 #define MX_DIAGNOSTICSMXPEGTILERECEIVER_ID "DiagnosticsMxPEGTileReceiver"
00066
00067
00068
00069 #include <interfaces/IComponent.h>
00070 #include <interfaces/IComponentInvoker.h>
00071 #include <interfaces/IMxPEGTileReceiver.h>
00072 #include <interfaces/IErrorState.h>
00073
00074 #include <Framework/Framework.h>
00075
00076 #include <mxm/core/mxmFrameInfo.h>
00077
00078
00079
00080 namespace mx {
00081
00083
00088 class DiagnosticsMxPEGTileReceiver : public mxmObject,
00089 public virtual IComponent,
00090 public virtual IMxPEGTileReceiver {
00091
00095 private:
00096 static mxm::smart<mxmStringList> _enumerateInterfaces() {
00097 return(new mxmStringList((mxmString(MX_DIAGNOSTICSMXPEGTILERECEIVER_ID),
00098 MX_ICOMPONENT_ID,
00099 MX_IMXPEGTILERECEIVER_ID,
00100 MX_IERRORSTATE_ID)));
00101 }
00102 static mxm::smart<mxmStringList> _enumerateCapabilities(
00103 const mxmString &interface) {
00104 if(interface == mx::Framework::IdHintKey)
00105 return(new mxmStringList(MX_DIAGNOSTICSMXPEGTILERECEIVER_ID));
00106 else
00107 return(new mxmStringList());
00108 }
00109
00110 private:
00111 class Invoker : public mxmObject, public virtual IComponentInvoker {
00112 public:
00113 mxm::smart<mxmStringList> enumerateInterfaces() {
00114 return(_enumerateInterfaces());
00115 }
00116 mxm::smart<mxmStringList> enumerateCapabilities(
00117 const mxmString &interface) {
00118 return(_enumerateCapabilities(interface));
00119 }
00120 IComponent *newComponent() {
00121 return(new DiagnosticsMxPEGTileReceiver());
00122 }
00123 };
00124 public:
00126 static IComponentInvoker *newInvoker() {
00127 return(new Invoker());
00128 }
00129
00130 private:
00131 int ReceivedFrames;
00132 int TileNum,
00133 AudioBlockNum;
00134 bool ErrorEncountered;
00135 mxm::u32 TilePixelBuffer[16*16*3/4];
00136 mxmFrameInfo FrameInfo;
00137
00138 public:
00139 DiagnosticsMxPEGTileReceiver();
00140 ~DiagnosticsMxPEGTileReceiver();
00141
00142 public:
00144 mxm::smart<mxmStringList> enumerateInterfaces();
00146 mxm::smart<mxmStringList> enumerateCapabilities(const mxmString &interface);
00147
00149 void setFrameInfo(const mxmFrameInfo &frame_info);
00151 void videoResolutionChanged(int width, int height);
00153 void frameComplete();
00155 void provideVideoTilePixelTarget(int tile_x, int tile_y,
00156 mxm::u32 **target_ptr,
00157 int *row_stepping_ptr);
00159 void videoTileTransferred();
00161 int frameCounter();
00162
00164 mxm::u8 *provideAudioBlockTarget(const mxmAudioBlockInfo
00165 &audio_block_info);
00167 virtual void audioBlockTransferred();
00168
00170 void setErrorState();
00172 bool errorState();
00173 };
00174 };
00175
00176
00177
00178 #endif // __MX_DIAGNOSTICSMXPEGTILERECEIVER_H__