oops...I stand corrected. You're right..looks like I was just incrementing the numbers 1.1, 1.2, 1.3, 1.4....1.24. Wow that's a lot of builds..hadn't realized that....
Ok, so Brian, did you say that v1.23 worked for you but v.124 didn't?
Ian if you can PM me or upload 1.4 I'll compare the two...alot has changed since then but I don't remember changing naything involved in thumbnails. Actually, the only thing different is that it downloaded thumbnails had priority over pulling them from the files. Something happened on my PC or in a codec pack or in a windows update that broke image thumbnail extractionfor me. I get black thumbnails for all video except MS's. Anyone else having the same issue?
Ok, so I jsut tested dvds and movie folders and they worked.
1. In my C:\users\public\videos folder i created a folder called Harry Potter\
2.I created a sub folder C:\users\public\videos\Harry Potter\video_ts
3. I coped 2 arbitrary vides to C:\users\public\videos\Harry Potter (not into the video_ts)
4. I was able to download metadata but more importantly, I was able to play them as a single playlist. I verified that playing transitioned to the next video file 'part' in the playlist
So that's movie folders.
Now, for dvds, I am just going to post the relevant code I am doing with the hope that it will help shine some light on this. I remember changing/cleaning up something in GetDVDMedia() but since I don't use any source control at home...
anyhoo, here are the relevant functions
public
static string GetDVDMedia(string folder)
{
// Check arguments
if (string.IsNullOrEmpty(folder))
throw new ArgumentNullException("folder");
string dvdMedia = Path.Combine(folder, "VIDEO_TS");
dvdMedia =
"dvd://" + dvdMedia.Replace(@"\", "/");
return dvdMedia;
}
...
public static bool IsDVD(string folder)
{
if (string.IsNullOrEmpty(folder))
return false;
bool folderIsDVD = (File.Exists(Path.Combine(folder, @"VIDEO_TS\VIDEO_TS.IFO")));
if (!folderIsDVD)
{
folderIsDVD =
File.Exists(Path.Combine(folder, "VIDEO_TS.IFO"));
}
if (!folderIsDVD)
{
folderIsDVD =
File.Exists(Path.Combine(folder, @"\VTS_01_1.VOB"));
}
return folderIsDVD;
}
....
private void PlayMediaInternal(GalleryVideo video)
{
try
{
// If we are in an Extender and this is not an Extender-friendly
// media type then show a message
if (LibraryApplication.IsExtenderSession() && (!LibraryApplication.IsExtenderFriendlyVideo(video.Metadata.Content)))
{
LibraryApplication.ShowDialog(string.Format("Can't play {0} files on extenders yet", video.Metadata.Extension), "Not Supported", DialogButtons.Ok, 0, true);
}
else
{
// HACK:
// Reset our playstate
_LastPlayState =
PlayState.Undefined;
// Save the current video so we can save its position when
// playing is paused or stopped
_CurrentVideo = video;
// Use a playlist wrapper to override the title displayed
// in the Now Playing feature of Media Center
string mediaToPlay = CreatePlaylistWrapper(video.Metadata);
// Start playing media
MediaType mediaType;
if (video.Metadata.MediaType == VideoMediaTypes.DVD)
{
mediaType =
MediaType.Dvd;
}
else
{
mediaType =
MediaType.Video;
}
PlayMedia(mediaType, mediaToPlay);
// NOTE!:
// TV Pack 2008 Bug
// Transport API is broken. Some times the transport is not available
// after playing a video
//
if (Transport != null)
{
// If there was a previously saved position then move to it
// NOTE:
// For some reason, if you alter the position of a *.dvr-ms file afer you
// start playing it, you run into problems with the video skipping back/forward.
if (_CurrentVideo.Metadata.Position > 0)
{
// The last playing position was saved in Milliseconds
Transport.Position =
new TimeSpan(0, 0, 0, 0, _CurrentVideo.Metadata.Position);
}
// Hook up transport handler to watch for Pause, Play, Stop, etc.
Transport.PropertyChanged +=
new PropertyChangedEventHandler(HandleTransportPropertyChanged);
}
}
}
catch (Exception ex)
{
WriteLogEntry(ex);
}
}
public static void PlayMedia(MediaType mediatype, object media)
{
// addtoqueue is only valid for audio files
AddInHost.Current.MediaCenterEnvironment.PlayMedia(mediatype, media, false);
AddInHost.Current.MediaCenterEnvironment.MediaExperience.GoToFullScreen();
}
...
protected void SetMediaType()
{
_ContentToPlay = Content;
if (VideoUtilities.IsDVD(Content))
{
_ContentToPlay =
VideoUtilities.GetDVDMedia(Content);
_MediaType =
VideoMediaTypes.DVD;
}
else
if (VideoUtilities.IsMovieFolder(Content))
{
//TODO: Get all videos in the folder and
// add them to the list of content
_MediaType =
VideoMediaTypes.MovieFolder;
}
else
if (VideoUtilities.IsRecordedTV(Content))
{
_MediaType =
VideoMediaTypes.RecordedTV;
}
else
if (VideoUtilities.IsStream(Content))
{
_MediaType =
VideoMediaTypes.Stream;
}
else
_MediaType =
VideoMediaTypes.Video;
}