Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
403 results
Show changes
Commits on Source (3)
......@@ -253,6 +253,16 @@ static HINSTANCE Direct3D9LoadShaderLibrary(void)
return instance;
}
static unsigned int GetPictureWidth(const vout_display_t *vd)
{
return vd->source.i_visible_width;
}
static unsigned int GetPictureHeight(const vout_display_t *vd)
{
return vd->source.i_visible_height;
}
/**
* It creates a Direct3D vout display.
*/
......@@ -310,6 +320,9 @@ static int Open(vlc_object_t *object)
if (CommonInit(vd))
goto error;
sys->sys.pf_GetPictureWidth = GetPictureWidth;
sys->sys.pf_GetPictureHeight = GetPictureHeight;
/* */
video_format_t fmt;
if (Direct3D9Open(vd, &fmt)) {
......@@ -996,7 +1009,7 @@ static int Direct3D9Open(vout_display_t *vd, video_format_t *fmt)
else if (!vd->source.b_color_range_full && d3dbuffer->rmask && !d3dfmt->rmask)
{
D3DADAPTER_IDENTIFIER9 d3dai;
if (sys->hd3d.use_ex && SUCCEEDED(IDirect3D9Ex_GetAdapterIdentifier(sys->hd3d.objex, sys->d3d_dev.adapterId, 0, &d3dai)) &&
if (sys->hd3d.use_ex && SUCCEEDED(IDirect3D9Ex_GetAdapterIdentifier(sys->hd3d.objex, sys->d3d_dev.adapterId, 0, &d3dai)) &&
d3dai.VendorId == GPU_MANUFACTURER_NVIDIA) {
// NVIDIA bug, YUV to RGB internal conversion in StretchRect always converts from limited to limited range
......@@ -1246,6 +1259,14 @@ static int Direct3D9CreateScene(vout_display_t *vd, const video_format_t *fmt)
LPDIRECT3DDEVICE9 d3ddev = p_d3d9_dev->dev;
HRESULT hr;
// On nVidia & AMD, StretchRect will fail if the visible size isn't even.
// When copying the entire buffer, the margin end up being blended in the actual picture
// on nVidia (regardless of even/odd dimensions)
UINT texture_width = fmt->i_visible_width;
UINT texture_height = fmt->i_visible_height;
if (texture_width & 1) texture_width++;
if (texture_height & 1) texture_height++;
/*
* Create a texture for use when rendering a scene
* for performance reason, texture format is identical to backbuffer
......@@ -1253,8 +1274,8 @@ static int Direct3D9CreateScene(vout_display_t *vd, const video_format_t *fmt)
*/
LPDIRECT3DTEXTURE9 d3dtex;
hr = IDirect3DDevice9_CreateTexture(d3ddev,
fmt->i_width,
fmt->i_height,
texture_width,
texture_height,
1,
D3DUSAGE_RENDERTARGET,
p_d3d9_dev->pp.BackBufferFormat,
......@@ -1267,8 +1288,7 @@ static int Direct3D9CreateScene(vout_display_t *vd, const video_format_t *fmt)
}
#ifndef NDEBUG
msg_Dbg(vd, "Direct3D created texture: %ix%i",
fmt->i_width, fmt->i_height);
msg_Dbg(vd, "Direct3D created texture: %ix%i", texture_width, texture_height);
#endif
/*
......@@ -1601,17 +1621,17 @@ static void orientationVertexOrder(video_orientation_t orientation, int vertex_o
}
static void Direct3D9SetupVertices(CUSTOMVERTEX *vertices,
const RECT *src, const RECT *src_clipped,
const RECT *dst,
const RECT *full_texture, const RECT *visible_texture,
const RECT *rect_in_display,
int alpha,
video_orientation_t orientation)
{
/* Vertices of the dst rectangle in the unrotated (clockwise) order. */
const int vertices_coords[4][2] = {
{ dst->left, dst->top },
{ dst->right, dst->top },
{ dst->right, dst->bottom },
{ dst->left, dst->bottom },
{ rect_in_display->left, rect_in_display->top },
{ rect_in_display->right, rect_in_display->top },
{ rect_in_display->right, rect_in_display->bottom },
{ rect_in_display->left, rect_in_display->bottom },
};
/* Compute index remapping necessary to implement the rotation. */
......@@ -1623,22 +1643,22 @@ static void Direct3D9SetupVertices(CUSTOMVERTEX *vertices,
vertices[i].y = vertices_coords[vertex_order[i]][1];
}
float right = (float)src_clipped->right / (float)src->right;
float left = (float)src_clipped->left / (float)src->right;
float top = (float)src_clipped->top / (float)src->bottom;
float bottom = (float)src_clipped->bottom / (float)src->bottom;
float texture_right = (float)visible_texture->right / (float)full_texture->right;
float texture_left = (float)visible_texture->left / (float)full_texture->right;
float texture_top = (float)visible_texture->top / (float)full_texture->bottom;
float texture_bottom = (float)visible_texture->bottom / (float)full_texture->bottom;
vertices[0].tu = left;
vertices[0].tv = top;
vertices[0].tu = texture_left;
vertices[0].tv = texture_top;
vertices[1].tu = right;
vertices[1].tv = top;
vertices[1].tu = texture_right;
vertices[1].tv = texture_top;
vertices[2].tu = right;
vertices[2].tv = bottom;
vertices[2].tu = texture_right;
vertices[2].tv = texture_bottom;
vertices[3].tu = left;
vertices[3].tv = bottom;
vertices[3].tu = texture_left;
vertices[3].tv = texture_bottom;
for (int i = 0; i < 4; i++) {
/* -0.5f is a "feature" of DirectX and it seems to apply to Direct3d also */
......@@ -1686,17 +1706,17 @@ static int Direct3D9ImportPicture(vout_display_t *vd,
{
/* Copy picture surface into texture surface
* color space conversion happen here */
RECT copy_rect = sys->sys.rect_src_clipped;
RECT texture_visible_rect = sys->sys.rect_src_clipped;
// On nVidia & AMD, StretchRect will fail if the visible size isn't even.
// When copying the entire buffer, the margin end up being blended in the actual picture
// on nVidia (regardless of even/odd dimensions)
if ( copy_rect.right & 1 ) copy_rect.right++;
if ( copy_rect.left & 1 ) copy_rect.left--;
if ( copy_rect.bottom & 1 ) copy_rect.bottom++;
if ( copy_rect.top & 1 ) copy_rect.top--;
hr = IDirect3DDevice9_StretchRect(sys->d3d_dev.dev, source, &copy_rect, destination,
&copy_rect, D3DTEXF_NONE);
}
if ( texture_visible_rect.right & 1 ) texture_visible_rect.right++;
if ( texture_visible_rect.left & 1 ) texture_visible_rect.left--;
if ( texture_visible_rect.bottom & 1 ) texture_visible_rect.bottom++;
if ( texture_visible_rect.top & 1 ) texture_visible_rect.top--;
hr = IDirect3DDevice9_StretchRect(sys->d3d_dev.dev, source, &texture_visible_rect, destination,
&texture_visible_rect, D3DTEXF_NONE);
}
IDirect3DSurface9_Release(destination);
if (FAILED(hr)) {
msg_Dbg(vd, "Failed IDirect3DDevice9_StretchRect: source 0x%p 0x%0lx",
......@@ -1818,26 +1838,26 @@ static void Direct3D9ImportSubpicture(vout_display_t *vd,
const float scale_w = (float)(video.right - video.left) / subpicture->i_original_picture_width;
const float scale_h = (float)(video.bottom - video.top) / subpicture->i_original_picture_height;
RECT dst;
dst.left = video.left + scale_w * r->i_x,
dst.right = dst.left + scale_w * r->fmt.i_visible_width,
dst.top = video.top + scale_h * r->i_y,
dst.bottom = dst.top + scale_h * r->fmt.i_visible_height;
RECT src;
src.left = 0;
src.right = r->fmt.i_width;
src.top = 0;
src.bottom = r->fmt.i_height;
RECT src_clipped;
src_clipped.left = r->fmt.i_x_offset;
src_clipped.right = r->fmt.i_x_offset + r->fmt.i_visible_width;
src_clipped.top = r->fmt.i_y_offset;
src_clipped.bottom = r->fmt.i_y_offset + r->fmt.i_visible_height;
Direct3D9SetupVertices(d3dr->vertex, &src, &src_clipped,
&dst, subpicture->i_alpha * r->i_alpha / 255, ORIENT_NORMAL);
RECT rect_in_display;
rect_in_display.left = video.left + scale_w * r->i_x,
rect_in_display.right = rect_in_display.left + scale_w * r->fmt.i_visible_width,
rect_in_display.top = video.top + scale_h * r->i_y,
rect_in_display.bottom = rect_in_display.top + scale_h * r->fmt.i_visible_height;
RECT texture_rect;
texture_rect.left = 0;
texture_rect.right = r->fmt.i_width;
texture_rect.top = 0;
texture_rect.bottom = r->fmt.i_height;
RECT texture_visible_rect;
texture_visible_rect.left = r->fmt.i_x_offset;
texture_visible_rect.right = r->fmt.i_x_offset + r->fmt.i_visible_width;
texture_visible_rect.top = r->fmt.i_y_offset;
texture_visible_rect.bottom = r->fmt.i_y_offset + r->fmt.i_visible_height;
Direct3D9SetupVertices(d3dr->vertex, &texture_rect, &texture_visible_rect,
&rect_in_display, subpicture->i_alpha * r->i_alpha / 255, ORIENT_NORMAL);
}
}
......