SegmentSeeker::tracks_seekpoint_t
SegmentSeeker::get_seekpoints( matroska_segment_c& ms, mtime_t target_pts, track_ids_t const& priority_tracks )
{
    struct contains_all_of_t {
        bool operator()( tracks_seekpoint_t const& haystack, track_ids_t const& track_ids )
        {
            for( track_ids_t::const_iterator it = track_ids.begin(); it != track_ids.end(); ++it ) {
                if( haystack.find( *it ) == haystack.end() )
                    return false;
            }

            return true;
        }
    };

    for( mtime_t needle_pts = target_pts; ; )
    {
        seekpoint_pair_t seekpoints = get_seekpoints_around( needle_pts, priority_tracks );

        Seekpoint const& start = seekpoints.first;
        Seekpoint const& end   = seekpoints.second;

        index_range( ms, Range( start.fpos, end.fpos ), needle_pts );

        {
            tracks_seekpoint_t tpoints = find_greatest_seekpoints_in_range( start.fpos, target_pts );

            if( contains_all_of_t() ( tpoints, priority_tracks ) )
                return tpoints;
        }

        needle_pts = start.pts - 1;
    }

    vlc_assert_unreachable();
}
Beispiel #2
0
void CifarDataSet<M>::read(int itemCount, string path, const bool fine_labels, tensor<float, M>& X, tensor<float, M>& y) {
	ifstream dataStream;
	dataStream.open (path.c_str(), ios::binary );
	tensor<unsigned char, host_memory_space> data(extents[itemCount][3074]);

	dataStream.read((char*) data.ptr(), data.size());
	assert(dataStream.good());

		tensor_view<unsigned char, host_memory_space> coarseLabels_char_view =
				data[indices[index_range()][index_range(0, 1)]];
		tensor_view<unsigned char, host_memory_space> fineLabels_char_view =
				data[indices[index_range()][index_range(1, 2)]];
		tensor_view<unsigned char, host_memory_space> pixels_char_view =
				data[indices[index_range()][index_range(2, 3074)]];

		tensor<unsigned char, host_memory_space> coarseLabels_char =
				coarseLabels_char_view.copy();
		tensor<unsigned char, host_memory_space> fineLabels_char =
				fineLabels_char_view.copy();
		tensor<unsigned char, host_memory_space> pixels_char =
				pixels_char_view.copy();

		tensor<float, host_memory_space> coarseLabels(extents[itemCount][1]);
		tensor<float, host_memory_space> fineLabels(extents[itemCount][1]);
		tensor<float, host_memory_space> pixels(extents[itemCount][3072]);

		convert(coarseLabels, coarseLabels_char);
		convert(fineLabels, fineLabels_char);
		convert(pixels, pixels_char);

		X = pixels.copy();
		//cout<<fineLabels<<endl;
		//cout<<coarseLabels<<endl;
		y = fine_labels ? fineLabels.copy() : coarseLabels.copy();
		dataStream.close();
	}
Beispiel #3
0
 index_range operator+(index shift) const
 { 
   return index_range(start_ + shift, finish_ + shift, stride_); 
 }
Beispiel #4
0
 static index_range all() 
 { return index_range(from_start(), to_end(), 1); }