56 static S_RECTANGLE mg_video_scaling = { -1000, -1000, 1000, 1000 };
57 #ifdef INCLUDE_FREESAT 58 static S_RECTANGLE mg_image_scaling = { -1000, -1000, 1000, 1000 };
61 static void Mheg5ToScalingCoordinates(
S_RECTANGLE *rect )
91 if (mg_subtitle_on != subtitleOn)
93 mg_subtitle_on = subtitleOn;
94 if (subtitleOn && mg_full_screen)
121 new_video_scaling.
left = xOffset;
122 new_video_scaling.
top = yOffset;
123 TRACE(TGRAPHICS | TSTRM | TSTATE, (
"rgn=(%d,%d,%d,%d) offset=(%d,%d)", rgn.
left, rgn.
top, rgn.
right, rgn.
bottom, xOffset, yOffset))
138 else if (rgn.
right < 0)
145 TRACE(TGRAPHICS | TSTRM | TSTATE, (
"rgn=(%d,%d,%d,%d) offset=(%d,%d)", rgn.
left, rgn.
top, rgn.
right, rgn.
bottom, xOffset, yOffset))
174 if (rgn.
left < xOffset)
181 xOffset = rgn.
left - xOffset;
183 if (rgn.
top < yOffset)
190 yOffset = rgn.
top - yOffset;
192 TRACE(TGRAPHICS | TSTRM | TSTATE, (
"rgn=(%d,%d,%d,%d) offset=(%d,%d)", rgn.
left, rgn.
top, rgn.
right, rgn.
bottom, xOffset, yOffset));
196 TRACE(TGRAPHICS | TSTRM | TSTATE, (
"No SCALE rgn=(%d,%d,%d,%d) offset=(%d,%d)", rgn.
left, rgn.
top, rgn.
right, rgn.
bottom, xOffset, yOffset))
199 if (new_video_scaling.
left == 0 && new_video_scaling.
top == 0)
206 TRACE(TGRAPHICS | TSTRM | TSTATE, (
"SCALE(%d,%d) rgn=(%d,%d,%d,%d) offset=(%d,%d)", (
int)video->
xScale, (
int)video->
yScale,
210 if (new_video_scaling.
left == 0 && new_video_scaling.
top == 0 &&
219 TRACE(TGRAPHICS | TSTRM | TSTATE, (
"default video position"))
220 new_video_scaling.
top = 0;
221 new_video_scaling.
left = 0;
226 #ifdef INCLUDE_FREESAT 227 if (contentHook == CHOOK_BITMAP_IMAGE_PLANE_IFRAME)
229 if (new_video_scaling.
height != mg_image_scaling.
height ||
230 new_video_scaling.
width != mg_image_scaling.
width ||
231 new_video_scaling.
left != mg_image_scaling.
left ||
232 new_video_scaling.
top != mg_image_scaling.
top 235 mg_image_scaling = new_video_scaling;
238 DVB_MhegSetImageScaling( NULL );
244 Mheg5ToScalingCoordinates( &new_video_scaling );
245 DVB_MhegSetImageScaling( &new_video_scaling );
251 if (new_video_scaling.
height != mg_video_scaling.
height ||
252 new_video_scaling.
width != mg_video_scaling.
width ||
253 new_video_scaling.
left != mg_video_scaling.
left ||
254 new_video_scaling.
top != mg_video_scaling.
top 257 mg_video_scaling = new_video_scaling;
266 Mheg5ToScalingCoordinates( &new_video_scaling );
270 if (mg_full_screen != fullscreen)
272 mg_full_screen = fullscreen;
273 if (fullscreen && mg_subtitle_on)
301 #ifdef INCLUDE_USER_DEFINED_VTG 307 switch (formatConversion)
311 *graphicsXVal = width * videoXval;
312 *graphicsYVal = height * videoYval;
315 *graphicsXVal = width * (8 * videoXval -
SD_WIDTH) / 6;
316 *graphicsYVal = height * videoYval;
319 *graphicsXVal = width * videoXval;
320 *graphicsYVal = height * (6 * videoYval +
SD_HEIGHT) / 8;
323 *graphicsXVal = width * (16 * videoXval -
SD_WIDTH) / 14;
324 *graphicsYVal = height * (12 * videoYval +
SD_HEIGHT) / 14;
327 *graphicsXVal = width * (6 * videoXval +
SD_WIDTH) / 8;
328 *graphicsYVal = height * videoYval;
331 *graphicsXVal = width * videoXval;
332 *graphicsYVal = height * (8 * videoYval -
SD_HEIGHT) / 6;
335 *graphicsXVal = width * (8 * videoXval -
SD_WIDTH) / 6;
336 *graphicsYVal = height * (8 * videoYval -
SD_HEIGHT) / 6;
339 *graphicsXVal = width * (14 * videoXval +
SD_WIDTH) / 16;
340 *graphicsYVal = height * (14 * videoYval -
SD_HEIGHT) / 12;
343 *graphicsXVal = width * (14 * videoXval -
SD_WIDTH) / 12;
344 *graphicsYVal = height * (14 * videoYval -
SD_HEIGHT) / 12;
347 *graphicsXVal = width * (16 * videoXval -
SD_WIDTH) / 14;
348 *graphicsYVal = height * (16 * videoYval -
SD_HEIGHT) / 14;
350 #ifdef INCLUDE_USER_DEFINED_VTG 351 case FORMAT_CONVERSION_USER_DEFINED:
352 tmMHEG5VideoToGraphics(videoXval, videoYval, &xVal, &yVal);
361 *graphicsXVal = width * videoXval;
362 *graphicsYVal = height * videoYval;
368 mg_video_scaling.
left);
370 mg_video_scaling.
top);
379 mg_full_screen =
TRUE;
void MG_SetSubtitleMode(MHEG5Bool subtitleOn)
Set the current subtitle display mode to be either On or Off, Should only have an impact if subtitles...
void MG_SetVideoPosition(MHEG5Video *video, MHEG5Int contentHook)
void DVB_MhegSetVideoScaling(S_RECTANGLE *scaling)
Set Mheg video scaling.
void MG_VideoPositionReset(void)
E_MhegErr DVB_MhegSubtitleSetVisibility(E_DvbSubtitleShowState showState)
Show or hide DVB subtitles. This operation remains in force until set again by another call to this f...
DVB Video functions are required by MHEG5 engine. All required functions should be non-blocking...
This file defines the profile for the MHEG engine.
struct _S_Region S_Region
E_FORMAT_CONVERSION DVB_MhegGetDecoderFormatConversion(void)
Mheg5 logging and debug printing.
MHEG5Ingredient ingredient
void MG_DisplayVideoToGraphics(MHEG5Int videoXval, MHEG5Int videoYval, MHEG5Int *graphicsXVal, MHEG5Int *graphicsYVal)
Calculate the graphical co-ordinate from a given video coordinate (should take into account the curre...
Interaction Channel Streaming functions required by MHEG5 engine References: [1] UK1 Profile - Digita...
Video Scaling / Positioning functionality.