133 lines
8.5 KiB
Plaintext
133 lines
8.5 KiB
Plaintext
|
`Continuing Review:
|
||
|
- make sure there are no [out] parms. must be [in, out] or [out, retval]
|
||
|
- don't use leading underscore on names(except new enum) use attrs instead
|
||
|
- com categories including safe for scripting on all classes w/ object factory
|
||
|
check regbag and tuner classes for this too.
|
||
|
- assignment operators/copy ctors in all atl smart ptr derived classes
|
||
|
- #pragma once in headers
|
||
|
- check non-extensible, non-createable attrs on .idl
|
||
|
- don't use hungarian in .idl it looks weird in vb object browser
|
||
|
- examine all VariantChangeType calls and make sure we're not doing any inplace calls on
|
||
|
Variant* that are [in] only. they don't belong to us and we shoudln't write to them.
|
||
|
for example, they may be using a different heap than we are.
|
||
|
- new enum, ienumVARIANT. make sure no ienumunknown or other types
|
||
|
- review // undone:
|
||
|
- review // REV2: to see if any can be moved to this version
|
||
|
- review E_NOTIMPL
|
||
|
- review cat maps to be sure eveyone has appropriate safe for scripting, etc.
|
||
|
- standard dispids
|
||
|
|
||
|
todo:
|
||
|
- missing default args on IMPLs that inherit from IDispatch
|
||
|
- make tuning requests use VT_BYREF for tuning space object and modify atlcom
|
||
|
so this qi's for imoniker and saves a registry moniker
|
||
|
- figure out which properties should respond on propertynotifysink
|
||
|
- better errors when custom composition segments fail.
|
||
|
- figure out why graph build is only connecting composite between ati xbar and 829 xbar
|
||
|
and, why it works anyway.
|
||
|
- decide what to do if vidprot can't get a def tr or something goes wrong in
|
||
|
graph build. do we try to fallback to some other form even if it doesn't have
|
||
|
video so that at least there's a control object associated with the object tag?
|
||
|
- test hw slice codec analog graph build
|
||
|
- investigate atltrace showing up in release version
|
||
|
- stock readystatechange event on top level vidctl, state property to return graph state
|
||
|
- we need to figure out what the bug is that causes std::hex io maniuplator on our outputdebugstring iostream
|
||
|
support to start outputting floating point format for integers. note, this only happens on unicode. i'm
|
||
|
pretty sure that we're either missing or have incorrect some kind of overload for wchar in that case.
|
||
|
- set a flag in the bind context that allows us to call the tv: prot and just get a parsed tune request back
|
||
|
instead of a new vidctl instance. we can then use this if we get a view call for a BSTR.
|
||
|
- missing events:
|
||
|
EC_VIDEO_SIZE_CHANGED source size changed from video renderer, ontune from bda tuner.
|
||
|
source size changed from video renderer, ontune from bda tuner.
|
||
|
- cat maps override IObjectSafety. go through all objects and remove catid_safeforxxx and replace
|
||
|
with IObjectSafetyImpl everywhere. this is more consistent and should be faster since it saves
|
||
|
having to hit the registry as much.
|
||
|
|
||
|
tuning model:
|
||
|
- tune.h helpers for componenttypes, components, and dvb
|
||
|
- status method on ITuner
|
||
|
- ontunerchangedevent, bcast event
|
||
|
|
||
|
spec:
|
||
|
- reflect imediaposition, don't pass through object. we don't want script clients to ever have direct pointers to
|
||
|
the graph. we want to reserve the right to cache and swap graphs around as devices change in order to
|
||
|
optimize performance. as things get more complicated, there will be trade-offs between change the existing
|
||
|
graph dynamically and swapping entire graphs quickly. we don't know what those heuristics are going to
|
||
|
be yet. as long as we maintain wrappers around the real graph, we can change it under the covers at will.
|
||
|
- doc frame stepping and other mods to IPlaybackimpl
|
||
|
- do we want a plugable protocol vid:string rep of anything vid can view
|
||
|
- investigate: we should possibly do an object based representation of dvd track/title, etc. this would allow
|
||
|
us to leverage the sub stream components for karaoke, subpic, etc. we would then move the dvd: url
|
||
|
parsing that philliplu did up into the pluggable protocol and create a dvd object at that point. then we
|
||
|
can treat dvd: exactly like tv: in the vidctl. we should also figure out the assocation between these
|
||
|
objects and dvd bookmarks. the advantage of having the parser in the protocol rather than the segment is
|
||
|
that it allows view to optimize the device search by qi'ing for interfaces a ruling out or restricting the
|
||
|
search to entire categories of devices instead of having to pass a string to every single device.
|
||
|
- do more comparison to existing media player and mci
|
||
|
- update tuning model. phys chan, msbda abbreviation, other stuff???
|
||
|
|
||
|
--------- future revisions -----------
|
||
|
|
||
|
tuning model:
|
||
|
- need to put default max prop size in ts w/ hidden restricted put_ in order to
|
||
|
size limit check all the bstr properties to prevent dnos attacks that fill up the disk/registry.
|
||
|
currently its a hardcoded 4k.
|
||
|
- currently, persisted tune requests make a copy of the tuning space values. we need a registry moniker
|
||
|
so that we can put a reference to the tuning space in the tune request. this way if the a tuning
|
||
|
space property changes all the tune requests will automatically reflect that change.
|
||
|
- fix component types persistence to use property bag in addition to pb2 and store count as an explicit property
|
||
|
- fix components collection to be persistable like
|
||
|
|
||
|
tuning model fixes that should be back-propped to dx 8.X:
|
||
|
- tune request object factories replaced for de-persisting
|
||
|
- VT_BSTR_BLOB change
|
||
|
- atl base class fix to not persist VT_DISPATCH or VT_UNKNOWN with null pointer
|
||
|
- DVBS hierarchy change
|
||
|
|
||
|
|
||
|
vidctl:
|
||
|
- investigate IDispatchEX. should we use this instead?
|
||
|
- investigate updating enums to use atl enum on stl for possible code size saving
|
||
|
- figure out interface support needed for being an ie effects 'filter' object. ala dxtransform or be a behavior
|
||
|
- investigate vs7 stl and see what impact this will have on us ahead of time
|
||
|
- think about an arbitrary render file device
|
||
|
- fwdseq, iterator comparison is doing a valuetype compare. this is semantically suspect.
|
||
|
we should really keep a counter and state and compare numbers of calls to next and FAILED(hr)
|
||
|
instead of comparing returned values.
|
||
|
- investigate mouse wheel support. might be cool for dvd menus. might also be useful event to pass to clients
|
||
|
- go thru and remove all the atlwin stuff and replace it with references to wtl.
|
||
|
this include deleting atlwin, fixing resulting compile errors, and taking out all the non-cstring support
|
||
|
from tstring.h, we're commited to tstring now.
|
||
|
- go thru and see if we can fix our debug infrastructure to rely on dshow's. we may need to add our iostream on
|
||
|
outputdebugstring support. on the other hand, this probably can't be done if it creates a dependency on
|
||
|
msvcpxx.dll for dshow.
|
||
|
- cleanup all the tstring stuff. we're committed to cstring now and there's no need to try to keep the
|
||
|
ability to switch between cstring and std::string
|
||
|
- we should expose the ability to set the number of streams on the video renderer on IMSVidGraphSeg so that
|
||
|
c++ apps can change the default from the current value of 4. although 4, should be sufficient 98% of the time
|
||
|
video, subpic, cc, plus a spare.
|
||
|
- there's room for perf optimization by reducing the amount of work done repeatedly in every vrsegimpl VRConfig
|
||
|
call.
|
||
|
- put_container should support moving to a different graph and caching the old graph so that if we go
|
||
|
back to it that we can recover the previous state without an expensive rebuild
|
||
|
- currently we load both the dsound renderer and the wave-in device into the graph for the default audio renderer
|
||
|
because we don't know if our source will be analog or digital. we need to change this to use the ksproxied
|
||
|
sys audio(wdm system audio renderer) which supports both as soon as the sysaudio proxy bugs are fixed and
|
||
|
the clock rate matching resampling code has been moved from dsound renderer to sysaudio.
|
||
|
- we need a segment registration scheme instead of the hardcoded list we currently have in whistler
|
||
|
- outputs is completely untested since we don't have any yet.
|
||
|
- support dynamic graph building
|
||
|
- props on video renderer to report back max stretch and decimation
|
||
|
|
||
|
perf optimizations:
|
||
|
- go through mswebdvd*.* and a bunch of throws can be changed to returns, with a try catch at outermost level thus
|
||
|
removing a bunch of interior try/catch setups
|
||
|
|
||
|
private atl:
|
||
|
- propertybag_load case VT_CLSID
|
||
|
in addition to VT_BSTR should also check for VT_CLSID and should attempt VariantChangeType
|
||
|
|
||
|
event binder:
|
||
|
- now that we know the script engine is guaranteed to provide the script site via IObjectWithSite
|
||
|
we should query back up into the dom and support using the event binder from createobject()
|
||
|
as well as from an object tag.
|