Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - tschak909

Pages: [1] 2 3 ... 369
1
Developers / Re: Fixing External Media Identifier
« on: February 16, 2017, 05:30:24 am »
I have done another build, this time incorporating a fix for issue #2723. disc ripping should now work correctly. I am looking to see if I need to explicitly add support for firing an identify when the External Media Identifier starts up (e.g. if it crashes.), but I think this should work better.

Please make sure that you can:

* Identify and rip a DVD
* Identify and rip a CD

The current CD and DVD identifiers use the Microsoft Media Services (MDR) data source, and for American DVDs, this works great... Stuff in other zones may not work as well, need to see...

If anyone still has, e.g. a copy of Windows 7, with the media player, and you happen to be in europe, Please try to play a movie, and if a cover art comes back, please talk to me, so that I can instruct you on how to get the necessary network tracing data, so that I can augment the EMI code.

-Thom

Latest build here: https://drive.google.com/open?id=0BxBzWnEPRL2HSXZVR2JMblhTQTg


2
Developers / Re: Fixing External Media Identifier
« on: February 13, 2017, 10:55:03 pm »
Latest i386 binary for 1404 here:

https://drive.google.com/open?id=0BxBzWnEPRL2HMUpYMjZsU3NBaVk

-Thom

3
Developers / Re: Fixing External Media Identifier
« on: February 13, 2017, 10:48:09 pm »
Interestingly enough, that hasn't recurred since building my dev environments (I have tested on both a 64-bit 1604 and a 32-bit 1404 VM environment, same hardware)..

As it happens, VMWare workstation is proving to be a far more stable environment for development than VirtualBox (and even properly handles compositing)... with the latest Utils.sh, vmware is now detected and handled properly.

-Thom

4
Developers / Fixing External Media Identifier
« on: February 13, 2017, 08:16:42 pm »
Hello everyone,

I've been on hiatus for the last year and a half (actually a bit longer), as I needed to take care of other things in my life...but am back now, and squashing bugs on my list.

One of the things I had left in an unfinished state was debugging the reverse engineered External Media Identifier, which identifies CDs and DVDs inserted into the system and tags them appropriately.

Due to (what is now known as) an unusual compiler bug dealing with 64-bit pointer alignment, I had to disable the DVD identification code that I had written which replicated the behavior found in the original External Media Identifier.

This code now works, and I've been able to identify a series of both DVD and CD disks correctly, all of which have corresponding entries in the AMG database.

I need a few people who have DVD and CD collections to ping me, so I can give an External Media Identifier binary to test, and report issues, so that I can finally get this piece dealt with.

-Thom

5
Users / Re: What is compatible with LMCE?
« on: June 20, 2016, 02:45:39 pm »
I am the engineer for the Game Player, and I want to apologise for the temporary removal of the Game Player from LinuxMCE.

The Game Player, as it stood in LinuxMCE, had a few flaws:

* imprecise control of the target emulation, due to needing to synthesize X events, and all of the insane synchronization issues that arise from this.
* Huge amounts of metadata were downloaded when the plugin was installed on the core

I was in the middle of writing solutions to address these problems, when the code was accidentally prematurely pushed to the main source code repository in the master branch, which left the code in a very unusable state.

Life has since intervened (most recently, my wife was involved in a car accident), so my priorities are shifted, for the moment.

I intend to address these issues, once we've gotten the bug list for the rest of the system down to a manageable amount. The Game Player will come back, it's my baby, but it needs some serious engineering elbow grease to make it better.

-Thom


6
Users / Re: question?
« on: February 22, 2016, 06:25:59 am »
I have seen this issue, myself, which leads me to believe that the HDHR needs either some segmentation, VLAN, and/or QoS action at the switch, as it tends to be very chatty.

-Thom

7
Users / Re: Thoughts on my system design
« on: February 21, 2016, 01:39:15 am »
Welcome to LinuxMCE. The best advice that we can give, is to be patient, and if needed, talk to community members on the #linuxmce channel on irc.freenode.org.

To answer your questions:
(1) not that I know of, but if you're comfortable writing code in either C++, Ruby, or Shell scripting, a device template and resulting DCE device can be made that LinuxMCE can easily control.
(2) Again, not that I know of, we are always looking for solutions in this department, but nothing has been made widely available on any platform, save for Windows.
(3) I did write a DCE device for the Hulu Desktop player, but Hulu Labs has since discontinued it (as of 2012), and it will no longer work on current systems, so we have removed it from builds. We are looking for creative solutions for Netflix, as well.
(4) The Fiire remote was a custom remote designed by Gyration for Fiire Inc., These remotes haven't been made since 2010, and the support code for them was disrupting a wide variety of other devices in the system, so the code was removed.

-Thom

8
Users / Re: The return of CDDB and CD-Ripping
« on: February 10, 2016, 06:19:08 pm »
Fantastic! Great work! :)

-Thom

9
Users / Re: Game Player builds on Hiatus
« on: February 01, 2016, 04:17:40 am »
I take, from the silence, that I can take my time and fold back in Game Player functionality, when I've had chance to do things right?

-Thom

10
Users / Game Player builds on Hiatus
« on: January 13, 2016, 08:46:15 am »
Hi guys,

Sorry, for various reasons, I've had to ask phenigma to remove the game player from LinuxMCE.

This is temporary, and there are many reasons behind this, all of them my fault, and the decision was mine alone.

I am taking the opportunity to do several things:

* get rid of the 3 GIGABYTE deb packages containing metadata. Replace them with a web service that serves the relevant metadata.
* re-work how metadata is stored and related, so that it can scale much better than what we have.
* provide a way for user overrides without explicitly needing to replace the attributes in web admin.
* provide a way to control the emulators in a consistent manner. This is exceptionally difficult, and systems like Hyperspin have the benefit of a MANDATED OPERATING SYSTEM LEVEL MESSAGING SYSTEM to pass events to the emulators, without requiring patching. Being Linux, we have no such luxury, so I have to do some SERIOUS experimentation and research to determine the best way to control the emulators
* pull the build of the emulators away from the build system, leading to cutting the build time of LinuxMCE in half, at least. (Yes, my stuff was adding hours to the build process!)
* Dockerize the build system to allow for the latest versions of MAME to be built with precisely the dependencies needed, as well as providing a modular way to keep the build up to date.
* Provide a way to select which version of MAME to use. For those of us with varying collections, this is critical.
* Use hashes to identify media and media attributes.

It will all be back, I just need to do some serious re-working of it, as years of experience have shown that I implemented it wrong in the first place. That's okay, it's all a learning experience. I know better, now.

What are your thoughts?

-Thom

11
Developers / Re: Developing a Weather Plugin, videos
« on: September 13, 2015, 07:11:14 pm »
If you want to understand how the bound icons for weather are being handled, please watch my Plugin video.

-Thom

12
Developers / Re: Developing a Weather Plugin, videos
« on: September 13, 2015, 07:10:31 pm »
The code has been changed to add a couple of variables, ending in _tonight, for the tonight's forecast page, bringing the variables available, to:

Code: [Select]
      UpdateBoundIcon(sDeviceIDs, "cond_current", "weather");
      UpdateBoundIcon(sDeviceIDs, "cond_tonight", "weather_tonight");
      UpdateBoundIcon(sDeviceIDs, "cond_day1", "weather_day1");
      UpdateBoundIcon(sDeviceIDs, "cond_day2", "weather_day2");
      UpdateBoundIcon(sDeviceIDs, "cond_day3", "weather_day3");
      UpdateBoundIcon(sDeviceIDs, "cond_day1", "weather_day16");
      UpdateBoundIcon(sDeviceIDs, "cond_day2", "weather_day26");
      UpdateBoundIcon(sDeviceIDs, "cond_day3", "weather_day36");
      UpdateBoundIcon(sDeviceIDs, "cond_day4", "weather_day4");
      UpdateBoundIcon(sDeviceIDs, "cond_day5", "weather_day5");
      UpdateBoundIcon(sDeviceIDs, "cond_day6", "weather_day6");
 
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherNow_CONST),TEXT_Current_Description_CONST,"cond_current");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherNow_CONST),TEXT_Current_Temperature_CONST,"temp_current");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherNow_CONST),TEXT_Current_Humidity_Data_CONST,"humidity_current");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherNow_CONST),TEXT_Current_Pressure_Data_CONST,"pressure_current");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherNow_CONST),TEXT_Current_Wind_Data_CONST,"wind_current");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherNow_CONST),TEXT_Current_Direction_Data_CONST,"direction_current");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherNow_CONST),TEXT_Current_Visibility_Data_CONST,"visibility_current");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherNow_CONST),TEXT_Current_Feels_Like_Data_CONST,"feelslike_current");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherNow_CONST),TEXT_City_Data_CONST,"location");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherNowDesc_CONST),TEXT_City_Data_CONST,"location");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast3_CONST),TEXT_City_Data_CONST,"location");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast6_CONST),TEXT_City_Data_CONST,"location");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherNowDesc_CONST),TEXT_Current_Description_CONST,"cond_tonight");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherNowDesc_CONST),TEXT_Current_Temperature_CONST,"temp_tonight");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherNowDesc_CONST),TEXT_Tomorrow_Weather_Forecast_CONST,"forecast_tonight");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherNow_CONST),TEXT_Age_of_Data_CONST,"data_age");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherNowDesc_CONST),TEXT_Age_of_Data_CONST,"data_age");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast3_CONST),TEXT_Age_of_Data_CONST,"data_age");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast6_CONST),TEXT_Age_of_Data_CONST,"data_age");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast3_CONST),TEXT_Day_1_Condition_CONST,"cond_day1");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast3_CONST),TEXT_Day_2_Condition_CONST,"cond_day2");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast3_CONST),TEXT_Day_3_Condition_CONST,"cond_day3");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast3_CONST),TEXT_3day_Hi_Data_1_CONST,"temp_hi_day1");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast3_CONST),TEXT_3day_Lo_Data_1_CONST,"temp_lo_day1");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast3_CONST),TEXT_3day_Hi_Data_2_CONST,"temp_hi_day2");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast3_CONST),TEXT_3day_Lo_Data_2_CONST,"temp_lo_day2");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast3_CONST),TEXT_3day_Hi_Data_3_CONST,"temp_hi_day3");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast3_CONST),TEXT_3day_Lo_Data_3_CONST,"temp_lo_day3");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast3_CONST),TEXT_3day_dow1_CONST,"dow_day1");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast3_CONST),TEXT_3day_dow2_CONST,"dow_day2");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast3_CONST),TEXT_3day_dow3_CONST,"dow_day3");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast6_CONST),TEXT_3day_dow1_CONST,"dow_day1");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast6_CONST),TEXT_3day_dow2_CONST,"dow_day2");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast6_CONST),TEXT_3day_dow3_CONST,"dow_day3");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast6_CONST),TEXT_6day_dow4_CONST,"dow_day4");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast6_CONST),TEXT_6day_dow5_CONST,"dow_day5");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast6_CONST),TEXT_6day_dow6_CONST,"dow_day6");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast6_CONST),TEXT_3day_Hi_Data_1_CONST,"temp_hi_day1");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast6_CONST),TEXT_3day_Lo_Data_1_CONST,"temp_lo_day1");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast6_CONST),TEXT_3day_Hi_Data_2_CONST,"temp_hi_day2");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast6_CONST),TEXT_3day_Lo_Data_2_CONST,"temp_lo_day2");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast6_CONST),TEXT_3day_Hi_Data_3_CONST,"temp_hi_day3");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast6_CONST),TEXT_3day_Lo_Data_3_CONST,"temp_lo_day3");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast6_CONST),TEXT_6day_Hi_Data4_CONST,"temp_hi_day4");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast6_CONST),TEXT_6day_Lo_Data4_CONST,"temp_lo_day4");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast6_CONST),TEXT_6day_Hi_Data5_CONST,"temp_hi_day5");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast6_CONST),TEXT_6day_Lo_Data5_CONST,"temp_lo_day5");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast6_CONST),TEXT_6day_Hi_Data6_CONST,"temp_hi_day6");
      UpdateText(sDeviceIDs,TOSTRING(DESIGNOBJ_mnuWeatherForecast6_CONST),TEXT_6day_Lo_Data6_CONST,"temp_lo_day6");

If you want this before a package is built, please build the weather plugin and install it.

We can do icons a bit later, as it may need to increase the size of the alternate images text field to accomodate them (I have to literally do a field for each.)

Not to mention ,that every single skin has to have icons to match. We need to be sure about this.

Also, it seems that Hi and Lo on my system are being shown backwards.

-Thom

13
Developers / Re: Developing a Weather Plugin, videos
« on: September 13, 2015, 05:16:56 pm »
I'll take a look, and make any needed changes to the plugin or the designer data. Keep trucking on. :)

-Thom

14
To explain a bit more about what phenigma is doing (phenigma, please correct me, as I will most likely be wrong on small details):

Our install process has been _very_ ad-hoc.

LinuxMCE depends on and utilizes many packages, many of them not only from our own repositories (for the DCE devices, the DCERouter, and the many scripts that frame them), but the many dependencies that each of these devices need in order to function.

Furthermore, many of these dependencies from the Ubuntu side are intended to be configurable, and can potentially be configured in ways that create unnecessary obstacles to LinuxMCE integration, so these things have needed to be pre-seeded in the past, and lots of little tweaks have been needed along the way.

Phenigma is doing some MUCH needed work, to clean this up. It's long, it's grimy, parts of it are freaky, and other parts will invariably cause hair loss, but what will come out of this is literally the ability to do:

Code: [Select]
# apt-get install lmce-core
# apt-get install lmce-hybrid
# apt-get install lmce-disked-md

etc..

and have LinuxMCE install itself and its needed dependencies to the point where the next boot then falls into the AV Wizard, and subsequently into a functional LinuxMCE system.

This leads into a refactoring of the whole start-up process, to use systemd. Whether you like it or not, systemd has become the accepted standard for the start-up of system and user services, and it is in our best interest to ensure that LinuxMCE starts and stops itself in a way that can cleanly be expressed in systemd.

As always, if anyone out there can help phenigma in his quest to vastly improve the plumbing of the system (which will ripple all the way up to the user experience), please contact him. This is important work.

-Thom

15
Developers / Re: Slow and steady ... moving from Trac to Gitlab
« on: August 22, 2015, 04:33:41 am »
Sweeet!  And thanks for your efforts! 

At work, we switched from Git/Trac to Git/Gitlab, and it's sooo much more of a productive environment. We've got hooks from certain projects into Jenkins for building RPM's 5 minutes after a commit, and that's sweet from a packaging point of view. Jenkins really rocks as well!  (BTW, there's a .deb builder plugin for Jenkins if that's of interest to you)

I have a small request of you and the core devs.  Gitlab represents a real opportunity to enable more people to get involved in LinuxMCE development and testing. In the past, I didn't want to have any form of SVN access;  I know enough to know I don't know enough about LMCE to event want any commit access (bull in a china shop syndrome). So, that limited me to filing tickets with diffs attached.

Gitlab changes all of that. The core devs can steward the main linuxmce project, and personal workspaces allow more novice folks like myself the opportunity to contribute through an isolated environment and merge requests. So, I would like to make the following request:

Could you folks create a wiki page with some example workflows that would enable folks like myself to contribute more, while minimizing the level of effort on the core devs to take advantage of what we do?

I'm thinking of example workflows like:
  • simple bug fix for existing code
  • significant bug fix for existing code or refactoring
  • simple new feature (new code)
  • significant new feature (majorly intrusive)

I think that giving us examples of how you want us to work would be good for us novices to learn, while making life easier for those already overcommitted core devs.   Maybe even a quick page on how issues should be filed might be good for standardizing and leveraging Gitlab's capabilities...

Just thought I'd put this out there for your consideration.

Thanks again for your hard work on this!  I'm sure it wasn't easy, but it will be worth it in the long run!

/Mike

A good post! Of course ,you're assuming we actually _have_ a workflow, but we don't....really....other than:

* File a ticket in trac
* assign your commits with Refs #1234 for that ticket
* make sure when you're done with it to close it, either with Fixes #1234, or by marking it closed or fixed. (depends on the ticket type).

Maybe we should... I dunno, what do you think, posde?

-Thom

Pages: [1] 2 3 ... 369