61 #ifdef SURFACE_THRESHOLD 72 #define MAX(a, b) (((a) > (b)) ? (a) : (b)) 73 #define MIN(a, b) (((a) < (b)) ? (a) : (b)) 78 #define MHEG5_MULTIPLEX_REF_VALID(mux) \ 79 ((mux).service_id != 0 && (mux).service_id != 0xffff) 115 #ifdef INCLUDE_FREESAT 169 static int numDirtyRects = 0;
173 #ifdef INCLUDE_FREESAT 179 #ifdef SURFACE_THRESHOLD 181 static S32BIT surfaceThreshold = SURFACE_THRESHOLD;
186 static void MHEG5displayUpdateStreamDecoders(
MHEG5Bool terminating);
287 ERROR_PRINT((
"ERROR: unknown colour type detected\n"));
301 int boxX1, boxY1, boxX2, boxY2;
310 int screenMarkerSize;
321 boxX2 = boxX1 + width - 1;
322 boxY2 = boxY1 + height - 1;
350 if (sliderRange <= 0)
364 sliderPos = sliderRange;
375 ERROR_PRINT((
"ERROR: Illegal slider orientation\n"));
384 screenRange = height;
389 screenPos = (sliderPos * screenRange) / sliderRange;
398 screenMarkerSize = 9;
399 screenPos = (sliderPos * (screenRange - screenMarkerSize)) / sliderRange + screenMarkerSize / 2;
406 height, 0, markerColour, markerColour );
410 height, 0, markerColour, markerColour);
414 screenMarkerSize, 0, markerColour, markerColour);
418 screenMarkerSize, 0, markerColour, markerColour );
430 MG_OSDdisplayRectangle( overlap, boxX2 - screenPos + 1, boxY1, screenPos, height, 0, markerColour, markerColour);
439 MG_OSDdisplayRectangle( overlap, boxX1, boxY2 - screenPos + 1, width, screenPos, 0, markerColour, markerColour);
445 screenPortion = (slider->
portion * screenRange) / sliderRange;
452 MG_OSDdisplayRectangle( overlap, boxX2 - screenPos - screenPortion + 1, boxY1, screenPortion, height, 0, markerColour, markerColour);
455 MG_OSDdisplayRectangle( overlap, boxX1 + screenPos, boxY1, screenPortion, height, 0, markerColour, markerColour);
458 MG_OSDdisplayRectangle( overlap, boxX1, boxY1 + screenPos, width, screenPortion, 0, markerColour, markerColour);
461 MG_OSDdisplayRectangle( overlap, boxX1, boxY2 - screenPos - screenPortion + 1, width, screenPortion, 0, markerColour, markerColour);
471 #ifdef INCLUDE_FREESAT 494 else if (DVB_MhegDecodeImagePlaneIFrame( visible->
ingredient.
data,
530 TRACE(TGRAPHICS, (
"box=(%d,%d,%d,%d) id=%ld clz=%d gd=%p", overlap->
left, overlap->
top, overlap->
right, overlap->
bottom,
608 #ifdef SURFACE_THRESHOLD 609 MG_ApplySurfaceThreshold(&visible->
graphic_data, surfaceThreshold);
621 #ifdef SURFACE_THRESHOLD 622 MG_ApplySurfaceThreshold(&visible->
graphic_data, surfaceThreshold);
634 #ifdef SURFACE_THRESHOLD 635 MG_ApplySurfaceThreshold(&visible->
graphic_data, surfaceThreshold);
649 MHEG5displaySlider((
MHEG5Slider *)visible, overlap );
664 #ifndef MHEG5PROFILE_UK1_06 693 static void AddExtraRect(
S_REGION rect,
int cur )
696 for (i = 0; i != cur; i++)
698 if (dirtyRects[i].right == 0)
702 dirtyRects[i] = rect;
703 if (numDirtyRects <= i)
710 while (numDirtyRects != 0 && dirtyRects[numDirtyRects - 1].right == 0)
720 dirtyRects[0].
left = 0;
721 dirtyRects[0].
top = 0;
728 TRACE(TGRAPHICS, (
"added new box[%d]=(%d,%d,%d,%d)", numDirtyRects, rect.
left, rect.
top, rect.
right, rect.
bottom))
730 dirtyRects[numDirtyRects] = rect;
758 if (!((
MHEG5Root *)visible)->runningStatus)
760 TRACE(TERROR, (
"Item is not visible! upd=%d, clz=%d id=%ld", upd, ((
MHEG5Root *)visible)->clazz, ((
MHEG5Root *)visible)->
id))
773 visible->
rect = rect;
786 visible->
rect = rect;
789 if ((rect.
top == 0 && rect.
left == 0 &&
795 dirtyRects[0].
left = 0;
796 dirtyRects[0].
top = 0;
801 TRACE(TGRAPHICS, (
"screen box=(%d,%d,%d,%d)",
802 dirtyRects[0].left, dirtyRects[0].top, dirtyRects[0].right, dirtyRects[0].bottom))
807 int i, d_rects, sav, expanded;
809 d_rects = numDirtyRects;
814 for (i = 0; i != d_rects; i++, pRect++)
828 if (rect.
top >= pRect->
top)
851 if (rect.
top < pRect->
top)
867 if (rect.
right != sav)
872 AddExtraRect( *pRect, i );
920 if (rect.
top >= pRect->
top)
961 AddExtraRect( *pRect, i );
988 if (rect.
top < pRect->
top)
1029 if (rect.
top != pRect->
top)
1035 AddExtraRect( *pRect, i );
1069 if (pRect->
top >= rect.
top)
1093 if (pRect->
top < rect.
top)
1111 AddExtraRect( *pRect, i );
1139 if (pRect->
top >= rect.
top)
1174 AddExtraRect( *pRect, i );
1183 if (pRect->
top > rect.
top)
1202 AddExtraRect( *pRect, i );
1230 else if (pRect->
right != 0)
1233 int cnt = 0, diff, most;
1260 most = pRect->
right;
1270 most -= pRect->
left;
1278 if (diff * 2 < most)
1299 if (rect.
top > pRect->
top)
1302 diff += rect.
top - pRect->
top;
1307 diff += pRect->
top - rect.
top;
1309 if (diff * 2 < most)
1331 if (rect.
top > pRect->
top)
1347 while (expanded != 0);
1350 AddExtraRect( rect, d_rects );
1352 TRACE(TGRAPHICS, (
"finished id=%ld, box=(%d,%d,%d,%d) num:was=%d,now=%d", visible->
ingredient.
root.
id,
1372 dirtyRects[0].
left = 0;
1373 dirtyRects[0].
top = 0;
1378 TRACE(TGRAPHICS, (
"box=(%d,%d,%d,%d)",
1379 dirtyRects[0].left, dirtyRects[0].top, dirtyRects[0].right, dirtyRects[0].bottom))
1390 TRACE(TERROR, (
"DVB_MhegAudioPlayClip failed"));
1413 MHEG5displayUpdateStreamDecoders(
MHEG5FALSE);
1417 RestartAudioClip( activeAudioObject->
parent );
1419 audio_pause_changed = audioFreeze;
1435 #ifdef INCLUDE_FREESAT 1436 if (imagePlaneDecoded)
1438 DVB_MhegImagePlaneIFrameStop();
1539 static void VideoStop(
MHEG5Bool terminating )
1553 static void AudioStop(
MHEG5Bool terminating )
1575 static void MHEG5displayUpdateStreamDecoders(
MHEG5Bool terminating)
1577 static MHEG5Int lastAudioVolume = 0;
1587 if ((lastVideoPlaying != videoPlaying) || (video_stream_changed) ||
1588 (lastTerminating != terminating))
1590 TRACE(TSTRM, (
"VP=%d ifrmPly=%d", videoPlaying, iframePlaying));
1593 assert( activeVideoObject );
1596 stream = activeVideoObject->
parent;
1601 TRACE(TSTRM, (
"V_srv_id=%d V_cmpt_id=%d",
1620 TRACE(TSTRM, (
"Video Play success, SS=%s", SS(stream)));
1633 TRACE(TSTRM, (
"SS=%s", SS(stream)));
1642 VideoStop(terminating);
1647 TRACE(TSTRM, (
"SS=%s service_id=%x", SS(stream),video_stream_ref.
service_id));
1661 if (lastIcStream == NULL)
1663 TRACE(TSTRM, (
"SS=%s service_id=%x", SS(stream),video_stream_ref.
service_id));
1665 memset(&video_stream_ref, 0,
sizeof(video_stream_ref));
1672 else if (!iframeDecoded)
1675 if (activeVideoObject != NULL)
1677 stream = activeVideoObject->
parent;
1682 TRACE(TSTRM, (
"AVO=%d AAO=%p STM=%p", activeVideoObject,
1683 activeAudioObject, stream));
1684 TRACE(TSTRM, (
"Stop Video, SS=%s", SS(stream)));
1711 TRACE(TSTRM, (
"No Video object (assume destroyed)"));
1714 VideoStop(terminating);
1717 lastVideoPlaying = videoPlaying;
1722 TRACE(TSTRM, (
"IGNORE: VP=%d ifrmPly=%d", videoPlaying, iframePlaying));
1726 if (lastVideoFreeze != videoFreeze || video_pause_changed)
1728 TRACE(TSTRM, (
"VF=%d", videoFreeze));
1737 lastVideoFreeze = videoFreeze;
1746 if (lastAudioVolume != audioVolume)
1749 if (activeAudioObject != NULL)
1751 stream = activeAudioObject->
parent;
1770 ERROR_PRINT((
"ERROR: OSDaudioSetVolume() - Failed to adjust audio volume\n"));
1772 lastAudioVolume = audioVolume;
1776 if (lastAudioFreeze != audioFreeze || audio_pause_changed)
1793 lastAudioFreeze = audioFreeze;
1798 if ((lastAudioPlaying != audioPlaying) || (audio_stream_changed) ||
1799 (lastTerminating != terminating))
1801 TRACE(TSTRM, (
"AP=%d ", audioPlaying))
1806 TRACE(TERROR, (
"Failed to stop audio"));
1811 assert( activeAudioObject );
1812 stream = activeAudioObject->
parent;
1817 TRACE(TSTRM, (
"A_srv_id=%d A_cmpt_id=%d",
1837 TRACE(TSTRM, (
"SetAudioStream/Mode OK, SS=%s", SS(stream)));
1850 TRACE(TSTRM, (
"SS=%s", SS(stream)));
1859 AudioStop(terminating);
1864 TRACE(TSTRM, (
"SS=%s", SS(stream)));
1877 if (lastIcStream == NULL)
1880 memset(&audio_stream_ref, 0,
sizeof(audio_stream_ref));
1893 TRACE(TERROR, (
"DVB_MhegAudioStopStream failed"))
1899 if (activeAudioObject != NULL)
1901 stream = activeAudioObject->
parent;
1902 TRACE(TSTRM, (
"AVO=%d AAO=%p STM=%p", activeVideoObject,
1903 activeAudioObject, stream));
1904 TRACE(TSTRM, (
"Stop Audio, SS=%s", SS(stream)));
1932 TRACE(TSTRM, (
"No Audio object (assume destroyed), %d", audioPlaying));
1935 AudioStop( terminating );
1938 lastAudioPlaying = audioPlaying;
1942 #ifndef MHEG5PROFILE_UK1_06 1950 lastTerminating = terminating;
1958 if (icStream != NULL)
1960 lastIcStream = icStream;
1966 lastIcStream = NULL;
1971 static void SetScaling(
void *dummy)
1973 TRACE(TSTRM, (
"AVO=%p, AIO=%p", activeVideoObject, activeIframeObject))
1974 #ifdef INCLUDE_FREESAT 1975 if (activeImagePlaneObject != NULL)
1981 if (activeIframeObject != NULL)
1986 else if (activeVideoObject != NULL)
2002 if (!displayStreamsAreLocked)
2004 if (videoPositionChanged && application && application->
lockCount == 0)
2016 #ifdef NO_STREAM_UPDATE_WHEN_LOCKED 2017 if (application && application->
lockCount == 0))
2020 if (streamSettingsChanged)
2023 MHEG5displayUpdateStreamDecoders(
MHEG5FALSE);
2038 TRACER(
int itemCount = 0;)
2046 if ((application) && (application->
lockCount == 0))
2048 TRACE(TGRAPHICS, (
"*************** numDirtyRects=%d *************",numDirtyRects))
2054 for (i = 0; i != numDirtyRects; i++, pRect++)
2056 if (pRect->right != 0)
2058 assert( pRect->right > pRect->left && pRect->bottom > pRect->top );
2068 #ifdef INCLUDE_FREESAT 2069 if (activeImagePlaneObject)
2076 for (i = 0; i != numDirtyRects; i++, pRect++)
2088 MHEG5displayDrawImagePlane((
MHEG5Visible *)activeImagePlaneObject, &overlap);
2100 if (!visible->ingredient.root.runningStatus)
2102 if (visible->graphic_data || visible->ingredient.cloned)
2104 TRACE(TGRAPHICS, (
"id=%d clzz=%d %p", visible->ingredient.root.id,
2105 visible->ingredient.root.clazz, visible->graphic_data))
2112 rect = visible->rect;
2114 for (i = 0; i != numDirtyRects; i++, pRect++)
2116 if (pRect->right > rect.
left && rect.
right > pRect->left &&
2117 pRect->bottom > rect.
top && rect.
bottom > pRect->top)
2121 overlap.
top =
MAX(pRect->top, rect.
top);
2126 MHEG5displayDraw( visible, &overlap );
2130 prevItem = prevItem->
prev;
2136 TRACE(TGRAPHICS, (
"*************** itemCount=%d *************",itemCount))
2158 activeAudioObject = audio;
2161 audioVolume = audio->
volume;
2163 TRACE(TSTRM, (
"(%p)", audio))
2170 if (stream->
speed[0] == 0)
2196 TRACE(TSTRM, (
"AP=%d", audioPlaying))
2200 MHEG5displayUpdateStreamDecoders(
MHEG5FALSE);
2206 TRACE(TERROR, (
"DVB_MhegAudioPlayClip returned %d", err))
2210 TRACE(TSTRM, (
"Audio Play Memory success, SS=%s", SS(stream)))
2224 TRACE(TSTRM, (
"AP=%d", audioPlaying))
2246 TRACE(TSTRM, (
" new Audio ref, SS=%s", SS(stream)))
2280 TRACE(TSTRM, (
"(%p) VP=%d", video, videoPlaying))
2282 if (activeVideoObject != NULL)
2288 activeVideoObject = video;
2292 if (stream->
speed[0] == 0)
2296 TRACE(TSTRM, (
"FROZEN"))
2326 TRACE(TSTRM, (
" new Video ref, SS=%s", SS(stream)));
2364 if (videoPlaying && video_stream_ref.
service_id == service_id)
2378 DBGTRACE(TSTRM,
"audioPlaying %u service_ids %u,%u",audioPlaying,audio_stream_ref.
service_id,service_id)
2410 if ((*item)->root.runningStatus)
2412 switch ((*item)->root.clazz)
2423 #ifndef MHEG5PROFILE_UK1_06 2434 ERROR_PRINT((
"ERROR: MHEG5displayStreamPlay: Illegal item class in stream multiplex\n"));
2452 TRACE(TSTRM, (
"AP=%d", audioPlaying))
2470 TRACE(TSTRM, (
"VP=%d", videoPlaying))
2493 TRACE(TSTRM, (
"SS=%s", SS(stream)))
2498 switch ((*item)->root.clazz)
2502 TRACE(TSTRM, (
"AP=%d", audioPlaying))
2509 TRACE(TSTRM, (
" NO active Audio"))
2523 TRACE(TSTRM, (
" NO active Video"))
2536 #ifndef MHEG5PROFILE_UK1_06 2547 ERROR_PRINT((
"ERROR: MHEG5displayStreamStop: Illegal item class in stream multiplex\n"));
2560 TRACE(TSTRM, (
"AVO=%d AAO=%p STM=%p", activeVideoObject, activeAudioObject, stream))
2561 TRACE(TSTRM, (
"STOPPING AP=%d SS=%s", audioPlaying, SS(stream)))
2567 TRACE(TSTRM, (
"AVO=%d AAO=%p STM=%p", activeVideoObject, activeAudioObject, stream))
2568 TRACE(TSTRM, (
"STOPPED AP=%d SS=%s", audioPlaying, SS(stream)))
2570 if (activeVideoObject && activeVideoObject->
parent == stream)
2572 activeVideoObject = NULL;
2574 if (activeAudioObject && activeAudioObject->
parent == stream)
2576 activeAudioObject = NULL;
2583 if (activeAudioObject == audio)
2585 TRACE(TSTRM, (
"audio destroy %x SS=%s", audio, SS(audio->
parent)))
2586 activeAudioObject = NULL;
2592 if (activeVideoObject == video)
2595 TRACE(TSTRM, (
" video destroyed %x, SS=%s", video, SS(video->
parent)))
2596 activeVideoObject = NULL;
2602 TRACE(TSTRM, (
"iframe destroyed, bmp=%p, AIO=%p", iframe, activeIframeObject))
2603 if (activeIframeObject == iframe)
2605 activeIframeObject = NULL;
2616 TRACE(TSTRM, (
"bmp=%x, AIO=%x, ifrmPly=%d ch=%d", bitmap, activeIframeObject, iframePlaying,
2618 #ifndef INCLUDE_FREESAT 2627 if (imagePlanePlaying)
2648 activeImagePlaneObject = bitmap;
2682 if (streamSettingsChanged)
2684 MHEG5displayUpdateStreamDecoders(
MHEG5FALSE);
2688 activeIframeObject = bitmap;
2693 #ifdef INCLUDE_FREESAT 2698 void MHEG5displayImagePlaneStop(
void)
2700 TRACE(TSTRM, (
"AIO=%x", activeIframeObject))
2701 if (DVB_MhegImagePlaneIFrameStop() !=
MHERR_OK)
2703 ERROR_PRINT((
"ERROR: OSDIFrameDisplayStop() - Failed to stop decoding IFrame\n"));
2707 #ifdef INCLUDE_FREESAT 2708 activeImagePlaneObject = NULL;
2719 TRACE(TSTRM, (
"AIO=%x", activeIframeObject))
2722 TRACE(TERROR, (
"Failed to stop decoding IFrame %d", iframeDecoded));
2726 activeIframeObject = NULL;
2737 if (activeVideoObject != NULL)
2744 TRACE(TSTRM, (
"VP=%d SS=%s", videoPlaying, SS(stream)));
2768 TRACE(TERROR, (
"SS callback, NO video object"))
2775 if (activeVideoObject != NULL)
2781 TRACE(TSTRM, (
"AVO=%p STM=%p", activeVideoObject, stream));
2782 TRACE(TSTRM, (
"VP=%d SS=%s", videoPlaying, SS(stream)));
2794 if (!streamSettingsChanged)
2796 activeVideoObject = NULL;
2802 TRACE(TERROR, (
"SS=%s", SS(stream)));
2816 TRACE(TSTRM, (
"SS callback, but NO video object %x", activeVideoObject))
2822 if (activeAudioObject != NULL)
2829 TRACE(TSTRM, (
"AAO=%p STM=%p", activeAudioObject, stream));
2830 TRACE(TSTRM, (
"AP=%d isClp=%d SS=%s", audioPlaying, isClip, SS(stream)));
2860 TRACE(TERROR, (
"SS callback, but NO audio object AP=%d", audioPlaying))
2866 if (activeAudioObject != NULL)
2873 TRACE(TSTRM, (
"AAO=%p STM=%p", activeAudioObject, stream));
2874 TRACE(TSTRM, (
"AP=%d isClp=%d SS=%s", audioPlaying, isClip, SS(stream)));
2880 TRACE(TSTRM, (
"AP=%d", audioPlaying))
2884 activeAudioObject = NULL;
2900 TRACE(TSTRM, (
"SS callback, but NO audio object AP=%d", audioPlaying))
2911 TRACE(TSTRM, (
"AVO=%x, AAO=%x", activeVideoObject, activeAudioObject))
2912 TRACE(TSTRM, (
"AP=%d, VP=%d", audioPlaying, videoPlaying))
2915 activeVideoObject = NULL;
2916 activeIframeObject = NULL;
2926 memset(&audio_stream_ref, 0,
sizeof(audio_stream_ref));
2927 memset(&video_stream_ref, 0,
sizeof(video_stream_ref));
2929 #ifndef MHEG5PROFILE_UK1_06 2938 MHEG5displayUpdateStreamDecoders(
MHEG5TRUE);
2976 audioVolume = volume;
2984 #ifdef SURFACE_THRESHOLD 2993 void MHEG5displaySetSurfaceThreshold(
S32BIT pixels)
2995 surfaceThreshold = pixels;
3010 static void SetSurfaceThreshold( MHEG5SurfaceThresholdEventParams_t *surfThresh )
3012 MHEG5displaySetSurfaceThreshold(surfThresh->pixels);
3013 MHEG5groupDestroySurfaces(surfThresh->pixels);
3036 event_msg.
data.surfaceThreshold.pixels = pixels;
3041 TRACE(TERROR, (
"VQ_PutMsg Failed"));
Implement MHEG5 engine control functions (i.e. start/stop etc)
E_MhegErr VQ_PutMsg(S_MhegMessage *pMsg, E_PRIORITY priority)
Post event or section message on queue. Copies data into queue.
void MHEG5displayRefreshStreams(U16BIT service_id)
void MHEG5displayAudioStop(void)
Stops playback of the audio media decoder.
void MHEG5displayRefreshDefaultAudio(U16BIT service_id)
F_MSG_PROCESS proc_msg_func
Distributor for Prepare, Destruct, Activate, Deactivate and Clone calls. Distribute the +Prepare +Des...
void MHEG5displayStreamUpdate(MHEG5Application *application)
E_MhegErr DVB_MhegAudioPlayDefault(void)
MHEG5 engine gives control of Audio to external application. Set decoding and presentation of Audio a...
MHEG5Ingredient ingredient
struct sMHEG5Ingredient * next
const char * stream_states[]
void MHEG5displayHotspot(MHEG5Visible *visible, int x1, int y1, int x2, int y2)
Draw a Hotspot.
U16BIT original_network_id
void MHEG5drawHypertext(MHEG5Hypertext *hypertxt)
void MHEG5displayStreamStop(MHEG5Stream *stream)
Stops playback of all active component of the specified stream object.
void MHEG5displayLockStreams(void)
Lock streams, disallow any stream updates.
void MHEG5notifyAudioStopped(BOOLEAN isClip)
U16BIT transport_stream_id
void MHEG5displayPause(void)
#define CHOOK_STREAM_NORMAL
MHEG5Colour desktopColour
#define MHEG5_MULTIPLEX_REF_VALID(mux)
void MHEG5displayStreamPlay(MHEG5Stream *stream)
Begin playback of all active components in the specifed stream object.
#define CHOOK_UNSPECIFIED
void MG_OSDdisplayDynamicLineart(void *data, S_REGION *overlap, int x, int y)
Display dynamic lineart.
#define CHOOK_BITMAP_NORMAL_IFRAME
void MG_DrawJpg(void *data, int len, MHEG5Visible *visible)
MHEG5Colour sliderRefColour
Stream event subscription management.
MHEG5Bool highlightStatus
void MHEG5displayRTGraphics(MHEG5RTGraphics *rtgraphics, int x1, int y1, int x2, int y2)
void MG_FreeData(void *data)
free surface buffer
void DVB_MhegSetVideoScaling(S_RECTANGLE *scaling)
Set Mheg video scaling.
void MHEG5displaySwitchbutton(MHEG5Visible *visible, int x1, int y1, int x2, int y2)
Draw a Switchbutton.
void MHEG5groupRedraw(MHEG5Root *group)
void MHEG5drawEntry(MHEG5Entryfield *entry, entryfieldCursor_t cursor)
union MHEG5Generic::@6 value
void MHEG5streamFindCurrentService(void)
Find the current service (i.e. the service corresponding to the currently running Video...
U16BIT transport_stream_id
void MG_OSDclear(void)
Clear the screen, making it the specified colour.
void MHEG5displayIFrameStart(MHEG5Bitmap *bitmap)
Start displaying an I-Frame.
void MG_DrawPng(void *data, int len, MHEG5Visible *visible)
void MHEG5displayIframeDestroy(MHEG5Bitmap *iframe)
void MG_SetVideoPosition(MHEG5Video *video, MHEG5Int contentHook)
E_MhegErr DVB_MhegVideoStopStream(void)
MHEG5 engine takes control of Video - and specifies that decoding and presentation of any Video strea...
void MHEG5stringDestruct(MHEG5String *item)
Destruct a MHEG5String.
void MHEG5displayVisUpd(MHEG5Visible *visible, U8BIT upd)
U16BIT original_network_id
void MHEG5displayVideoDestroy(MHEG5Video *video)
void MHEG5notifyAudioStarted(BOOLEAN isClip)
OSDColor OSDgetColour(const char *colour, int len)
Converts an MHEG5 colour value to an OSDColor type.
#define CHOOK_BITMAP_H264_IFRAME
void MHEG5displayUpdate(void)
Update the display, redrawing any visible objects that are in the dirty rectangle.
DVB Video functions are required by MHEG5 engine. All required functions should be non-blocking...
void MHEG5displayResetStreamDecoders(BOOLEAN update)
Reset all media decoders to default values. This is used when the MHEG-5 engine is terminated...
E_MhegErr DVB_MhegVideoPlayStream(S_DvbComponent *pDvbComponent)
MHEG5 engine takes control of Video - and informs that Video must be switched to the specified Video ...
void MH5_DisplayEntry(MHEG5Entryfield *entry, S_REGION *overlap)
This file defines the profile for the MHEG engine.
void MHEG5displayRtgraphicsPlay(MHEG5RTGraphics *rtgraphics)
Begin playback of the specified RTGraphics object.
E_MhegErr DVB_MhegVideoSetUpdating(E_VideoState displayState)
Switch between frozen or unfrozen video display (reacting on either the current or subsequent frame)...
U16BIT MHEG5GetVideoSid(void)
void MHEG5displayResume(void)
void MHEG5displayVideoPlay(MHEG5Video *video)
Begin playback of the specified video object.
E_StreamState streamState
#define MHEG5displayHide(v)
Event handling. Implementation of a combined queue for events and actions. This is the eventsystem wh...
#define CHOOK_STREAM_MEMORY
MHEG5DisplayStackItem * displayStackBottom
BOOLEAN MHEG5StreamerIsRunable(MHEG5Stream *stream)
Check that stream is runable (i.e. MHEG5StreamerPrepare has been called for it)
void MHEG5displayShowAll(void)
Redisplay all active visible objects. AKD: Optimised 12/5/99.
#define MHEG5displayShow(v)
Implement functions to retrieve MHEG5objects by GroupID and ID.
MHEG5Int sceneCoordinateSystem[2]
MHEG5Ingredient * multiplex[MAX_MLTPLX]
Implementation of the MHEG5 Application Class Defines a set of Ingredient objects, which are shared within an application scope. Base class: Group Subclasses: None Status: Concrete class.
void MG_OSDdisplayVideo(S_REGION rgn)
Display video window.
Mheg5 logging and debug printing.
void MHEG5initDynamicLineart(MHEG5DynamicLineart *dynamicLineart)
Create the canvas for a dynamic lineart object.
void MG_VideoPositionReset(void)
void MG_OSDdisplayRectangle(S_REGION *overlap, int x, int y, int width, int height, int lineWidth, OSDColor lineColour, OSDColor fillColour)
Draw rectangle.
MHEG class interface to graphics text render.
MHEG5Ingredient ingredient
void MHEG5StreamerRefresh(void)
Refresh any running IC streams - called when user preferences have changed.
E_MhegErr DVB_MhegAudioStopClip(void)
Instruct the controlling application that playback of the previously supplied audio clip should be st...
MHEG5Orientation orientation
DVB Audio functions are required by MHEG5 engine. All required functions should be non-blocking...
void MHEG5displayIFrameStop(void)
Stop displaying an I-Frame.
U16BIT MHEG5GetAudioSid(void)
void MHEG5displayClear(void)
<Function description>="">
E_MhegErr DVB_MhegAudioPlayStream(S_DvbComponent *pDvbComponent)
MHEG5 engine takes control of Audio - and informs that Audio must be switched to the specified Audio ...
OSDColor MHEG5displayColour(MHEG5Colour *colour)
Convert Generic Colour value to OSD specific value. If the generic colour is encoded as a string it i...
MHEG5Interactible interactible
MHEG5Scene * MHEG5getCurrentScene(void)
<Function description>="">
void MHEG5sendEvent(MHEG5Root *source, MHEG5EventType event, MHEG5Int data)
Store an event in the asynchronous event queue.
void MHEG5displayAudioPlay(MHEG5Audio *audio)
Begin playback of the specified audio object.
void MHEG5streamSetCurrentService(MHEG5Ingredient *item, S_DvbComponent *service)
Set the current service.
MHEG5Int MHEG5streamGetComponentTag(MHEG5Ingredient *item)
Get component tag for ingredient. This depends on the stream's content and the component tag of the i...
void MG_OSDerase(S_REGION rgn, OSDColor colour)
Erase an area of the OSD to the desktop colour.
void MHEG5displayRtGraphicsReset(void)
Reset all media decoders to default values. This is used when the MHEG-5 engine is terminated...
Interaction Channel Streaming functions required by MHEG5 engine References: [1] UK1 Profile - Digita...
void MH5_DisplayText(MHEG5Text *txt, S_REGION *overlap)
Definition of colour type for MHEG5 - settings and conversions.
void MHEG5StreamerRun(MHEG5Stream *stream)
Start streaming IP content for a prepared request.
E_MhegErr DVB_MhegAudioPlayClip(U8BIT *pAudioData, U32BIT dataLength, U32BIT repeatCount, E_AudioEncoding encoding)
Instruct the controlling application that the provided audio sound clip should be played...
void MHEG5freeDynamicLineart(MHEG5DynamicLineart *dynamicLineart)
Create the canvas for a dynamic lineart object.
E_MhegErr DVB_MhegVideoPlayDefault(void)
MHEG5 engine gives control of Video to external application. Set decoding and presentation of Video a...
E_MhegErr MHEG5_SetSurfaceThreshold(S32BIT pixels)
Set the minimum number of pixels that force the MHEG-5 engine to release a surface immediately after ...
E_MhegErr DVB_MhegAudioSetVolume(S32BIT volumeAdjust)
Adjust sound level for any external application sourced audio. A setting of 0 dB means leave the audi...
Implement generic MHEG5-display functions - independent from the OSD These are generic functions used...
void MHEG5displayRtgraphicsStop(void)
Stops playback of the RTGraphics (subtitle) media decoder.
E_MhegErr DVB_MhegICStreamAudioSetVolume(S32BIT volumeAdjust)
Set volume for audio component of the currently playing IC stream This function is equivalent to DVB_...
void MHEG5displayPushbutton(MHEG5Visible *visible, int x1, int y1, int x2, int y2)
Draw a Pushbutton.
Video Scaling / Positioning functionality.
union s_mhg_message::@13 data
E_MhegErr DVB_MhegAudioSetSpeed(E_AudioSpeed speed)
Instruct the controlling application that playback of the previously supplied audio clip should be pa...
void MHEG5notifyVideoStopped(void)
void MG_OSDdisplayBitmap(MHEG5Visible *visible, S_REGION *overlap)
MHEG5SliderStyle sliderStyle
void MHEG5drawText(MHEG5Text *txt)
void MHEG5displayVideoPositionUpdate(void)
void MHEG5groupClearImages(MHEG5Root *group)
E_MhegErr DVB_MhegAudioStopStream(void)
MHEG5 engine takes control of Audio - and specifies that decoding and presentation of any Audio strea...
void MHEG5displaySetVolume(MHEG5Int volume)
Volume Control.
MHEG5Colour highlightRefColour
struct sMHEG5DisplayStackItem * prev
void MHEG5displayLineart(int x1, int y1, int boxX1, int boxY1, int boxX2, int boxY2, MHEG5Bool bbbox, MHEG5Int lineWidth, MHEG5Int lineStyle, MHEG5Colour *refLineColour, MHEG5Colour *refFillColour)
Draw a Lineart Object.
E_MhegErr DVB_MhegVideoPlayIFrame(U8BIT *pVideoData, U32BIT dataLength, E_VideoEncoding encoding)
Instruct the controlling application to decode supplied video data. The I-Frame is displayed in the v...
void MHEG5displayUnlockStreams(void)
Unlock streams, allow stream updates.
E_MhegErr DVB_MhegVideoStopIFrame(void)
Instruct the controlling application to stop displaying the previously supplied video data in DVB_Mhe...
void MHEG5displayRtGraphicsUpdate(MHEG5Bool terminating, MHEG5Bool fullScreen)
void MHEG5displayVideoStop(void)
Stops playback of the video media decoder.
MHEG5Application * MHEG5getCurrentApplication(void)
<Function description>="">
void MHEG5notifyVideoStarted(void)
void MHEG5displayAudioDestroy(MHEG5Audio *audio)