RE: CR: Bug 237651 Failure to initialize inputs upon first encode attempt.
"Eric Hyche" <[email protected]>
| Newsgroups | gmane.comp.multimedia.helix.devel |
|---|---|
| Organization | RealNetworks, Inc. |
| Message-ID | <006b01c9b209$744ddf00$5ce99d00$@com> |
Nice catch, Sujeet. This looks good for checkin. Eric ======================================= Eric Hyche ([email protected]) Principal Engineer RealNetworks, Inc. >-----Original Message----- >From: [email protected] [mailto:[email protected]] >On Behalf Of Sujeet Kharkar >Sent: Friday, March 27, 2009 7:23 PM >To: [email protected]; [email protected] >Subject: [Helix-client-dev] CR: Bug 237651 Failure to initialize inputs upon first encode attempt. > >Synopsis > >============ > >Bug 237651 Failure to initialize inputs upon first encode attempt. > >Producer Fails to encode on first encode. > > > >Suggested Reviewer: Eric Hyche > > > >Branches > >========= > >Head > > > >Description > >============== > >Cause: > >======= > >In Media Platforms Init() call. There is call to Plugin2Handler::RefreshPluginInfo, which reads >registry for plugin's cached information. > > > >Default key used with producer is >HKEY_CURRENT_USER\Software\Helix\HelixSDK\1.0\Preferences\MountPoints. > >This registry contains details about each plugin like dll name mount point and other details including >GUID of plugin. > >During reading PluginHandler will create internal index, which will map plugins properties from >registry like GUID to actual plugin. > >At the end PluginHandler scans actual dll present in mount point to confirm, if any of loaded DLL are >not present in registry it re-writes registry entry. At this point it checks if plugin implements >IHXComponentPlugin, in yes then other plugin properties like GUID are added to index. > > > >During first encode, there is no registry entry so PluginHandler will not update it's internal index >of GUID to plugin as most of producer plugins do not implement IHXComponentPlugin, hence when producer >SDK tries to create plugin from GUID it will fail. > > >During second encode and hence forth these enteries are created, so everything works. > > > >Fix > >=== > >Fix was to add additional plugin values to index even though plugin does not implement >IHXComponentPlugin. > > > > > >Files affected > >================== > >client/common/container/plghand2.cpp,v > > > > > >Testing > >================= > >Verfied with deleting registry entry producer is still able to encode. > > > >QA Hints > >============= > >None > > > >Diff > >======= > >Index: plghand2.cpp > >=================================================================== > >RCS file: /cvsroot/client/common/container/plghand2.cpp,v > >retrieving revision 1.59 > >diff -u -r1.59 plghand2.cpp > >--- plghand2.cpp 19 Jan 2009 23:35:18 -0000 1.59 > >+++ plghand2.cpp 27 Mar 2009 22:11:48 -0000 > >@@ -582,6 +582,7 @@ > > { > > pPlugin->GetValuesFromDLL(pIHXPlugin); > > m_PluginList.AddTail(pPlugin); > >+ AddPluginToIndices(pPlugin); > > > > // Print out some log info about the plugin we just loaded > > { > > > >