Fullscreen Subtitle Problem
26074 cr points
Send Message: Send PM GB Post
24 / M
Offline
Posted 8/17/11 , edited 8/17/11
Hey,

I use this site frequently, and I tend to watch anime on my gaming computer, but I find that I can only watch on 1 screen due to this bug / error and most likely a fail in programming where some flash developer though no one will ever have a screen this large or this should be large enough. Well it isnt...

Full screen / Large screens (though browser zooming or post HTML modification of flash element size) work perfectly fine until i "Enable Subtitle Smoothing" - < semantics > Its not exactly smoothing but its more like moving them to another layer and rendering them at your native resolution not the resolution of the video. </ semantics > anyway when this is enabled and its in the browser it looks fine like this:

The Images Below ARE SCALED DOWN this means to see the what im talking about please click the links to the images above them!

http://i.imgur.com/6LOas.jpg


When zoomed in ~1400 pixels tall (for the flash element) things work as planned also, the text is rendering at the native resolution nice and clean:

http://i.imgur.com/KRB9S.jpg


Now here is where the trouble strikes, somewhere between 1400 and 1700 vertical pixels the black shadow in the text disappears making the subtitles very difficult to read, more so when there are white / bright backgrounds and this can be noted in the picture below:

http://i.imgur.com/D72C6.jpg


Finally resetting the zoom on the browser and hitting full screen I get a screen like this every time where the video player is the exact same resolution as it was when it was in the browser window, and I will note now, that this bug occurs in IE8, IE9, Firefox 2, Firefox 3, Chrome Build 13, anyway here is the screenshot of this effect, mainly the video failed to fill the screen and the elements that are usually just drawn behind the video frame / or before the flash player completely loads is properly stretched. (this is why i believe its something crunchyroll has failed to program and not a flash problem, as I can play flash games in my native resolution just fine, and I have moved at minimum 1 flash version in the time I have noted this error also my display drivers have been updated 2 times, this bug still occurs so its not this computer, my version of flash, or my browser) Also note that subtitles in this form are drawn properly, I grabbed the screen at the one second there weren't subtitle on the screen. Anyway~~

http://i.imgur.com/uF67L.jpg


and a final note, If the browser is zoomed in the video keeps its old size, so if we zoom in to ~1700 vertical pixels we get the same text bug,the picture below does not show the text bug as it is only ~1400 pixels tall but the full screen is larger still not full screen and still showing the background when loading, but interesting to know that the video element is not chaning size when moving from windowed to fullscreen and the screenshot of that can be seen below:

http://i.imgur.com/AgAHT.jpg


I really hope crunchyroll fixes this, at all, that would be nice, but I doubt it will happen any time soon, if it does, crunchyroll as a company will surprise me. Until then I will be sadly disappointed and irritated every time I want to relax and watch some anime.

If anyone has any ideas on how to fix this, Id would be open to them, if an admin / mod / shinji wants to comment that would be more awesome, Thanks for your time!
58662 cr points
Send Message: Send PM GB Post
30 / M / Dallas, TX
Online
Posted 8/17/11
This seems almost like you were trying to find a bug with such a specific situation. Does going from the normal video (un-zoomed) to fullscreen not work correctly?
26074 cr points
Send Message: Send PM GB Post
24 / M
Offline
Posted 8/17/11

eyeofpain wrote:

This seems almost like you were trying to find a bug with such a specific situation. Does going from the normal video (un-zoomed) to fullscreen not work correctly?


"trying to find a bug with such a specific situation" - not trying, when I enter fullscreen this occurs, if you qualify doing a simple action as "searching" for a bug, then yes I can agree with you but then we will need to argue your understanding of the word "search".

the simple truth is fullscreen DOES NOT work for me (to put it as you do you can refer to the 4th image). I lack to see how that was not conveyed in my post above, if you feel that I am just looking for a bug you should look again or attempt to debug software for yourself, I am a programmer of 7 years now and have programmed in flash before, having the knowledge and simple tests that I have preformed above would give anyone with an understanding of programming principles a good place to start.

Since you seem slightly confused I will go through why I felt each test would help anyone tempting to debug this error:

Proof that it works as designed when in a normal size
1. Showing that the player performs in the browser as normal
Proof that player works in normal screen sizes
2. Showing that the player when zoomed in plays as it should (its not a scaling issue between 0 -> 1400 px)
Proving that there is a bug in the text rendering at not so normal screen sizes
3. Showing that there is a bug in the text when the flash window exceeds 1400px
Showing that fullscreen without zoom has a bug
4. Showing what simply clicking full screen does
Showing that zooming the browser before fullscreen keeps the size that it was when in fullscreen
5. Showing what happens when the browser is zoomed in and full screen is clicked

Personally I am offended that your accusing me of *wasting* time by looking for a bug, simply because I have a personal vendetta against crunchyroll. I actually find that they are a good company and do a good job at what they set out to do.

I am also offended that you classify *fullscreen* as a "specific situation", yes I narrowed it down to a VERY specific situation, its called problem solving, I removed variables that without the simple tests I preformed would be unidentified, and the probability of this getting fixed is only lowered!

Thank you for completely misunderstanding my time and efforts and making me look as though I am an asinine creature. If anything the only thing that you have proven is that your incompetent at posting in the help section!

Note: If anything above has offended anyone, deal with it, everything that I have posted above has been compiled though logical analysis of the writing from the individual that posted a reply. If a moderator wishes to question that, Please send me a PM and we can discuss the foolishness of this at that time in full detail.
21084 cr points
Send Message: Send PM GB Post
Offline
Posted 8/17/11
Hm.. Ok so I can't seem to reproduce your bug here, on either one of my computers - so I'm not sure what's going on. Now saying this, I have been trouble shooting computers since I was 8 - and I'm going to try and help you here.

Can I ask what your native resolution is?
If it's the above resolution. Then never-mind

Are you running any ad-blocking ad-on?

Your using the latest version of flash?
-Do you have flash set to any different settings, have you tried looking at the flash settings, and/or did you consider turning on/off graphic accelerator (should be an option in flash control panel), try a different channel of google chrome (Canary build) to see if a dev version of flash would being about a change?

This only happens with CR videos?

Also, the fact that the video isn't changing it's size when you change the resolution could be that the video is already playing at it's max resolution for your graphic card. (I doubt this - considering I can airplay my iPad CR video to my 42" without any problems in hd)
58662 cr points
Send Message: Send PM GB Post
30 / M / Dallas, TX
Online
Posted 8/17/11
I was not trying to accuse you of "'wasting' time," it merely sounded, in your original post, like this was a very specific situation that only occurred after zooming in and out on a page. Hopefully, an admin can come along and address the issue.
26074 cr points
Send Message: Send PM GB Post
24 / M
Offline
Posted 8/17/11

eyeofpain wrote:

I was not trying to accuse you of "'wasting' time," it merely sounded, in your original post, like this was a very specific situation that only occurred after zooming in and out on a page. Hopefully, an admin can come along and address the issue.


It would be simpler to re-read the post before posting, and im sorry if I I misunderstood


eyeofpain wrote:
... like you were trying to find a bug ...


to mean that I was wasting time, Although logical to assume this, it was an assumption. Hopefully an admin can respond now without confusion.

Ronin
94039 cr points
Send Message: Send PM GB Post
30 / M / California
Offline
Posted 8/18/11
I don't have a monitor that displays at those resolutions and couldn't reproduce that problem on my monitor (1920x1200). Have you tried disabling hardware acceleration in Flash?
http://www.crunchyroll.com/help?topic=video#1

Subtitle Smoothing is buggy and as such is not the default option. It's only there for people that want to use it, knowing that it is buggy.

Though our video player is old and we are going to be making a new one later this year. So we might be able to fix the problem at that time but I can't make any promises.
26074 cr points
Send Message: Send PM GB Post
24 / M
Offline
Posted 8/18/11 , edited 8/18/11

BasouKazuma wrote:

I don't have a monitor that displays at those resolutions and couldn't reproduce that problem on my monitor (1920x1200). Have you tried disabling hardware acceleration in Flash?
http://www.crunchyroll.com/help?topic=video#1

Subtitle Smoothing is buggy and as such is not the default option. It's only there for people that want to use it, knowing that it is buggy.

Though our video player is old and we are going to be making a new one later this year. So we might be able to fix the problem at that time but I can't make any promises.


Yes, the limiting factor is that the monitor does not support resolutions higher than 1400 vertical pixels, Disabling hardware acceleration only increases my CPU usage by about double, frame rates drop to about 15fps and 2 of my 8 threads peg.

For testing, your next video player or replicating the bug, you can try running your monitor in portrait mode and scaling the video. Or you could even use hacked drivers to support a resolution of 4096x4096 and allow the monitor / gpu to give you a window, but the later method will only work on a few graphics cards and monitors.

BasouKazuma wrote:
Subtitle Smoothing is buggy and as such is not the default option. It's only there for people that want to use it, knowing that it is buggy.


knowing that this is buggy, it should have been fixed, and I am saddened to know that Crunchyroll does not try to fix bugs in a timely manner. Its also not noted anywhere that its buggy? I have used this site for almost a year now, love it, but not loving the support so much.


AlexandreFournier wrote:

Hm.. Ok so I can't seem to reproduce your bug here, on either one of my computers - so I'm not sure what's going on. Now saying this, I have been trouble shooting computers since I was 8 - and I'm going to try and help you here.


I believe you are running into the same problem as I noted above, the bug only occurs when the flash element expands beyond 1400px in height.


AlexandreFournier wrote:
Can I ask what your native resolution is?
If it's the above resolution. Then never-mind


My native resolution is 3240x1920 @ 32bpp


AlexandreFournier wrote:
Are you running any ad-blocking ad-on?

No I am not running any add blocking software during my tests


AlexandreFournier wrote:
Your using the latest version of flash?
-Do you have flash set to any different settings, have you tried looking at the flash settings, and/or did you consider turning on/off graphic accelerator (should be an option in flash control panel), try a different channel of google chrome (Canary build) to see if a dev version of flash would being about a change?


Just pulled a nightly build, same bug... running latest flash on all the browsers...


AlexandreFournier wrote:
This only happens with CR videos?


This bug only happens on CR videos, all other flash video players function as expected, filling the screen without error.


AlexandreFournier wrote:
Also, the fact that the video isn't changing it's size when you change the resolution could be that the video is already playing at it's max resolution for your graphic card. (I doubt this - considering I can airplay my iPad CR video to my 42" without any problems in hd)


That is probably not it my graphics card is a 5870, and naively supports render targets at 8192x8192, I have tested this in DX9c, DX10, and DX11 as well as OpenGL. Im am quite certain that that is not the problem.

Ronin
94039 cr points
Send Message: Send PM GB Post
30 / M / California
Offline
Posted 8/18/11
Subtitle smoothing was mainly a workaround for people that are viewing SD videos in fullscreen mode. It was not designed for large monitors since the amount of processing power required increases as the resolution increases. It is only recommended when necessary.

Tried putting my second monitor at a 90 degree rotation, still couldn't reproduce the problem. Though, our Flash developer usually has his second monitor rotated so I'm sure that was already tested. I'm guessing I would need a true large display to really test it. So I can see about adding a custom resolution on my home computer.

Though, if you don't experience problems elsewhere, it could be because we support Flash Player 9 and higher. I think we're going to move away from Flash 9 and support 10 and higher with the new player so that we can use features that were introduced with the release of Flash 10.
26074 cr points
Send Message: Send PM GB Post
24 / M
Offline
Posted 8/18/11

BasouKazuma wrote:

Subtitle smoothing was mainly a workaround for people that are viewing SD videos in fullscreen mode. It was not designed for large monitors since the amount of processing power required increases as the resolution increases. It is only recommended when necessary.

Tried putting my second monitor at a 90 degree rotation, still couldn't reproduce the problem. Though, our Flash developer usually has his second monitor rotated so I'm sure that was already tested. I'm guessing I would need a true large display to really test it. So I can see about adding a custom resolution on my home computer.

Though, if you don't experience problems elsewhere, it could be because we support Flash Player 9 and higher. I think we're going to move away from Flash 9 and support 10 and higher with the new player so that we can use features that were introduced with the release of Flash 10.


Ehhhh, My processor is fast enough hands down, but discussing that wont help...

Anyway~~ Correct me if I am wrong but... in...

StandardVideoPlayer.swf > Action > com > crunchyroll > standardvideoplayer > common > Shell

- Holds the interface used to dispatch events between the video player and the application mediator discussed next

StandardVideoPlayer.swf > Action > com > crunchyroll > standardvideoplayer > modules > videoplayer > view > ApplicationMediator

- Mainly is used for parsing the global notifications that can be sent from the user and other objects, mainly this is where the video player changes size... Specifically in the function "override public function handleNotification(param1:INotification) : void"

the two places in the trace that have the ability to set fullscreen are at lines 113 and 124 and look like:



case VideoPlayerFacade.ENABLE_FULLSCREEN:
{
app.setFullscreenResolution(_getFullscreenResolution());
app.enableFullscreen();
}


and



case VideoPlayerFacade.TOGGLE_FULLSCREEN:
{
app.setFullscreenResolution(_getFullscreenResolution());
app.enableFullscreen();
}


both of these call a single function called "_getFullscreenResolution()" which looks like this:



private function _getFullscreenResolution() : Rectangle
{
var _loc_1:* = undefined;
if(!_subtitle_smoothing)
{
_loc_1 = ChromelessProxy(facade.retrieveProxy(ChromelessProxy.NAME)).chromeless;
return new Rectangle(0, 0, _loc_1.nativeWidth, _loc_1.nativeHeight);
}
return null;
}


So assuming that subtitle_smoothing is false this is perfectly fine, as we enter fullscreen the flash app keeps its native resolution! Awesome, so say it is enabled: this function returns null.

Back up to the calling function of:
"app.setFullscreenResolution(_getFullscreenResolution())"
Can now be evaluated As
"app.setFullscreenResolution(null)"

Now "app" gets evaluated back to "VideoPlayerModule" its trace is:

StandardVideoPlayer.swf > Action > com > crunchyroll > standardvideoplayer > modules > VideoPlayerModule

and the class "VideoPlayerModule" just so happens to have the only function with setFullscreenResolution... the function looks like this:



public function setFullscreenResolution(param1:Rectangle) : void
{
_fullscreen_resolution = param1;
return;
}

So now the variable "_fullscreen_resolution" in the class "VideoPlayerModule" is equal to null

now the trace returns up to "ApplicationMediator" and runs the command "app.enableFullscreen();" calling that function in "VideoPlayerModule" which looks like this:



public function enableFullscreen() : void
{
shell.enableFullscreen(_fullscreen_resolution);
return;
}


SO "shell" is getting called with the function "enableFullscreen()" and that is getting passed "null"

the only class to implement shell is StandardVideoPlayer and its trace is:

StandardVideoPlayer.swf > Action > StandardVideoPlayer

calling shell.enableFullscreen causes this class's function to be called because it implements shell anyway this gets called:



public function enableFullscreen(param1:Rectangle = null) : void
{
stage.fullscreenSourceRect = param1;
stage.displayState = StageDisplayState.FULL_SCREEN;
return;
}


and both of these functions are nice, when null is set to stages fullscreen source, it disables hardware scaling and the second line stage.displayState enables fullscreen


So we can now say that the resized media is not the problem, your flash player is entering the proper size, disabling the proper flags, Cool, so it needs to be a problem in the way the player re sizes.

First I looked for the object i knew was scaling properly, the background and I was able to find this:

StandardVideoPlayer.swf > Action > com > crunchyroll > standardvideoplayer > shell > view > ApplicationMediator

contains this function:



private function _onResize(event:Event) : void
{
var _loc_2:* = getStageWidth();
var _loc_3:* = getStageHeight();
if(_background)
{
_background.setSize(_loc_2, _loc_3);
}
sendNotification(ApplicationFacade.RESIZE, new Rectangle(0,0,_loc_2, _loc_3));
return;
}


So this shows that the functions

"getStageWidth()"
and
"getStageHeight()"

which evaluate to be more like:



public function getStageHeight() : Number
{
return shell.stage.stageHeight;
}



So next, now knowing what the real size is and how it has been found before, Off to find how the player re-sizes and found that here:

StandardVideoPlayer.swf > Action > com > crunchyroll > vastplayer > VastPlayer

First I would like to explain why I believe this is the troublemaker class, the function:



public function _fillBg() : void
{
graphics.clear();
graphics.beginFill(0);
graphics.drawRect(0,0, _local_width, _local_height);
graphics.endFill();
return;
}


is inside the problem, thus we can conclude that the variable:

_local_height at one point is getting a wrong value, or is just not getting updated...

In the constructor of this class, we can note when the player is initialized it will have a size, and in the functions "override public function set height( param1 : Number) : void" and "override public function set width(param1:Number) : void" also set its size

The constructor is as follows:



public function VastPlayer(param1 : Number, param2 : Number)
{
_local_width = param1;
_local_height = param2;
_uid = "VastPlayer-" + Math.random().toString();
_fillBg();
_facade.startup(this);
}


The Width / Height follow this form almost identically:



override public functions set width(param1:Number) : void
{
if(width == param1)
{
return;
}
_local_width = param1;
_fillBg();
_resizeMediaPlayer();
return;
}


To find what exactly is calling the set width and set height functions I searched for when the class becomes an object I found 2 places but the one that I was concerned with (sine I dont see ads) is this one:

StandardVideoPlayer.swf > Action > com > crunchyroll > standardvideoplayer > modules > videoplayer > view > BumperPlayerMediator

which extends Mediator, and BumperPlayerMediator has a variable called player that returns a "View Component" which is a object that is not defined. This is where I cannot trace what object touches the "VastPlayer" it is not set by ".width" or ".height" or "setSize" or "resize" meaning that its probably an error with the way the "resize" is sent, or is getting corrupted somewhere along the path down to that file.

The way I would fix this is as follows, since I was unable to trace back to the exact source, since I cant actively debug I cant see where / what is firing the event, I would have to bypass the width / height that the extended class is passing and request the size as the background image has.

in psudo code it would look something like this at line 79 of the following file:

StandardVideoPlayer.swf > Action > com > crunchyroll > vastplayer > VastPlayer



private function _resizeMediaPlayer() : void
{
if(!_media_player)
{
return;
}
if(isInFullScreenMode)
{
width = getStageWidth();
height = getStageHeight();
}
// the function continues as it would in the original file
}


This is the best I can do, trying to debug without a real time debugger with breakpoints, but the problem is 98% sure where the resize command is sent after entering full screen.

Hopefully someone knowledgeable can understand this and use it to fix the current situation. Although this bug is most interesting!

Also looking forward to your next flash player!
You must be logged in to post.