WIP, Remote Client/Server, fist working transcode
This commit is contained in:
@@ -53,6 +53,7 @@ lms_SOURCES = \
|
|||||||
$(top_srcdir)/remote/server/Connection.cpp \
|
$(top_srcdir)/remote/server/Connection.cpp \
|
||||||
$(top_srcdir)/remote/server/ConnectionManager.cpp \
|
$(top_srcdir)/remote/server/ConnectionManager.cpp \
|
||||||
$(top_srcdir)/remote/server/AudioCollectionRequestHandler.cpp \
|
$(top_srcdir)/remote/server/AudioCollectionRequestHandler.cpp \
|
||||||
|
$(top_srcdir)/remote/server/MediaRequestHandler.cpp \
|
||||||
$(top_srcdir)/remote/server/RequestHandler.cpp \
|
$(top_srcdir)/remote/server/RequestHandler.cpp \
|
||||||
$(top_srcdir)/remote/server/Server.cpp \
|
$(top_srcdir)/remote/server/Server.cpp \
|
||||||
$(top_srcdir)/metadata/Utils.cpp
|
$(top_srcdir)/metadata/Utils.cpp
|
||||||
|
|||||||
@@ -140,6 +140,7 @@ class Track
|
|||||||
|
|
||||||
// Find utilities
|
// Find utilities
|
||||||
static pointer getByPath(Wt::Dbo::Session& session, const boost::filesystem::path& p);
|
static pointer getByPath(Wt::Dbo::Session& session, const boost::filesystem::path& p);
|
||||||
|
static pointer getById(Wt::Dbo::Session& session, id_type id);
|
||||||
static Wt::Dbo::collection< pointer > getAll(Wt::Dbo::Session& session);
|
static Wt::Dbo::collection< pointer > getAll(Wt::Dbo::Session& session);
|
||||||
static Wt::Dbo::collection< pointer > getAll(Wt::Dbo::Session& session,
|
static Wt::Dbo::collection< pointer > getAll(Wt::Dbo::Session& session,
|
||||||
const std::vector<Artist::id_type>& artistIds,
|
const std::vector<Artist::id_type>& artistIds,
|
||||||
|
|||||||
+6
-2
@@ -30,11 +30,15 @@ Track::setGenres(std::vector<Genre::pointer> genres)
|
|||||||
Track::pointer
|
Track::pointer
|
||||||
Track::getByPath(Wt::Dbo::Session& session, const boost::filesystem::path& p)
|
Track::getByPath(Wt::Dbo::Session& session, const boost::filesystem::path& p)
|
||||||
{
|
{
|
||||||
Wt::Dbo::Transaction transaction(session);
|
|
||||||
|
|
||||||
return session.find<Track>().where("path = ?").bind(p.string());
|
return session.find<Track>().where("path = ?").bind(p.string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Track::pointer
|
||||||
|
Track::getById(Wt::Dbo::Session& session, id_type id)
|
||||||
|
{
|
||||||
|
return session.find<Track>().where("id = ?").bind(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Track::pointer
|
Track::pointer
|
||||||
Track::create(Wt::Dbo::Session& session, const boost::filesystem::path& p, Artist::pointer artist, Release::pointer release)
|
Track::create(Wt::Dbo::Session& session, const boost::filesystem::path& p, Artist::pointer artist, Release::pointer release)
|
||||||
|
|||||||
@@ -31,13 +31,18 @@ class Header
|
|||||||
|
|
||||||
bool from_buffer(const std::array<unsigned char, size>& buffer)
|
bool from_buffer(const std::array<unsigned char, size>& buffer)
|
||||||
{
|
{
|
||||||
if (decode32(&buffer[0]) != _magic)
|
if (decode32(&buffer[0]) != _magic) {
|
||||||
|
std::cerr << "Header: bad magic" << std::endl;
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_size = decode32(&buffer[4]);
|
_size = decode32(&buffer[4]);
|
||||||
|
|
||||||
return _size < _maxSize;
|
if (_size > _maxSize)
|
||||||
|
std::cerr << "Header: msg too big (" << _size << ")!" << std::endl;
|
||||||
|
|
||||||
|
return _size <= _maxSize;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1141
-425
File diff suppressed because it is too large
Load Diff
+845
-363
File diff suppressed because it is too large
Load Diff
+44
-23
@@ -2,9 +2,14 @@ import "common.proto";
|
|||||||
|
|
||||||
package Remote;
|
package Remote;
|
||||||
|
|
||||||
enum CodecType
|
enum AudioCodecType
|
||||||
{
|
{
|
||||||
CodecTypeOGG = 1;
|
CodecTypeOGA = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum VideoCodecType
|
||||||
|
{
|
||||||
|
CodecTypeOGV = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -13,24 +18,41 @@ message MediaRequest
|
|||||||
|
|
||||||
message Prepare
|
message Prepare
|
||||||
{
|
{
|
||||||
required int64 id = 1; // Id if the media
|
|
||||||
|
|
||||||
required uint32 offset_secs = 2; // Offset in seconds
|
message Audio
|
||||||
optional CodecType codec_type = 3; // Codec of the media
|
{
|
||||||
|
required int64 track_id = 1; // Id if the media
|
||||||
|
optional AudioCodecType codec_type = 2;
|
||||||
|
optional uint32 bitrate = 3;
|
||||||
|
optional uint32 stream_idx = 4;
|
||||||
|
optional uint32 offset_secs = 5;
|
||||||
|
}
|
||||||
|
|
||||||
optional uint32 audio_bitrate = 4;
|
message Video
|
||||||
|
{
|
||||||
|
required int64 video_id = 1; // Id if the media
|
||||||
|
optional VideoCodecType codec_type = 2;
|
||||||
|
optional uint32 bitrate = 3;
|
||||||
|
optional uint32 offset_secs = 4;
|
||||||
|
optional uint32 audio_stream_idx = 5;
|
||||||
|
optional uint32 video_stream_idx = 6;
|
||||||
|
optional uint32 subtitle_stream_idx = 7;
|
||||||
|
}
|
||||||
|
|
||||||
// Video specifics
|
enum Type {
|
||||||
optional uint32 video_bitrate = 5;
|
AudioRequest = 1;
|
||||||
optional uint32 audio_stream_idx = 6;
|
VideoRequest = 2;
|
||||||
optional uint32 video_stream_idx = 7;
|
}
|
||||||
optional uint32 subtitle_stream_idx = 8;
|
|
||||||
|
required Type type = 1;
|
||||||
|
|
||||||
|
optional Audio audio = 2;
|
||||||
|
optional Video video = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
message GetPart
|
message GetPart
|
||||||
{
|
{
|
||||||
required uint32 requested_data_size = 1; // Amount of data requested. May receive more or less
|
required uint32 requested_data_size = 1; // Amount of data requested. May receive more or less. May receive 0 byte if complete
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
message Terminate
|
message Terminate
|
||||||
@@ -41,11 +63,11 @@ message MediaRequest
|
|||||||
enum Type
|
enum Type
|
||||||
{
|
{
|
||||||
TypeMediaPrepare = 1;
|
TypeMediaPrepare = 1;
|
||||||
TypeMediaGet = 2;
|
TypeMediaGetPart = 2;
|
||||||
TypeMediaTerminate = 3;
|
TypeMediaTerminate = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
required Type request_type = 1;
|
required Type type = 1;
|
||||||
|
|
||||||
optional Prepare prepare = 2;
|
optional Prepare prepare = 2;
|
||||||
optional GetPart get_part = 3;
|
optional GetPart get_part = 3;
|
||||||
@@ -55,21 +77,20 @@ message MediaRequest
|
|||||||
|
|
||||||
message MediaResponse
|
message MediaResponse
|
||||||
{
|
{
|
||||||
message MediaPart
|
message Part
|
||||||
{
|
{
|
||||||
required uint64 byte_offset = 1;
|
required bytes data = 1;
|
||||||
repeated bytes data = 2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
enum Type
|
enum Type
|
||||||
{
|
{
|
||||||
TypeMediaPart = 1;
|
TypeError = 1;
|
||||||
|
TypePart = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
required Error error = 1;
|
required Type type = 1;
|
||||||
|
|
||||||
required Type response_type = 2;
|
optional Error error = 2;
|
||||||
|
optional Part part = 3;
|
||||||
optional MediaPart part = 3;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,47 +22,47 @@ AudioCollectionRequestHandler::process(const AudioCollectionRequest& request, Au
|
|||||||
|
|
||||||
switch (request.type())
|
switch (request.type())
|
||||||
{
|
{
|
||||||
case AudioCollectionRequest_Type_TypeGetGenreList:
|
case AudioCollectionRequest::TypeGetGenreList:
|
||||||
if (request.has_get_genres())
|
if (request.has_get_genres())
|
||||||
{
|
{
|
||||||
res = processGetGenres(request.get_genres(), *response.mutable_genre_list());
|
res = processGetGenres(request.get_genres(), *response.mutable_genre_list());
|
||||||
if (res)
|
if (res)
|
||||||
response.set_type(AudioCollectionResponse_Type_TypeArtistList);
|
response.set_type(AudioCollectionResponse::TypeArtistList);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
std::cerr << "Bad AudioCollectionRequest_Type_TypeGetGenreList" << std::endl;
|
std::cerr << "Bad AudioCollectionRequest_Type_TypeGetGenreList" << std::endl;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AudioCollectionRequest_Type_TypeGetArtistList:
|
case AudioCollectionRequest::TypeGetArtistList:
|
||||||
if (request.has_get_artists())
|
if (request.has_get_artists())
|
||||||
{
|
{
|
||||||
res = processGetArtists(request.get_artists(), *response.mutable_artist_list());
|
res = processGetArtists(request.get_artists(), *response.mutable_artist_list());
|
||||||
if (res)
|
if (res)
|
||||||
response.set_type(AudioCollectionResponse_Type_TypeArtistList);
|
response.set_type(AudioCollectionResponse::TypeArtistList);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
std::cerr << "Bad AudioCollectionRequest_Type_TypeGetArtistList" << std::endl;
|
std::cerr << "Bad AudioCollectionRequest_Type_TypeGetArtistList" << std::endl;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AudioCollectionRequest_Type_TypeGetReleaseList:
|
case AudioCollectionRequest::TypeGetReleaseList:
|
||||||
if (request.has_get_releases())
|
if (request.has_get_releases())
|
||||||
{
|
{
|
||||||
res = processGetReleases(request.get_releases(), *response.mutable_release_list());
|
res = processGetReleases(request.get_releases(), *response.mutable_release_list());
|
||||||
if (res)
|
if (res)
|
||||||
response.set_type(AudioCollectionResponse_Type_TypeReleaseList);
|
response.set_type(AudioCollectionResponse::TypeReleaseList);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
std::cerr << "Bad AudioCollectionRequest_Type_TypeGetReleaseList" << std::endl;
|
std::cerr << "Bad AudioCollectionRequest_Type_TypeGetReleaseList" << std::endl;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AudioCollectionRequest_Type_TypeGetTrackList:
|
case AudioCollectionRequest::TypeGetTrackList:
|
||||||
if (request.has_get_tracks())
|
if (request.has_get_tracks())
|
||||||
{
|
{
|
||||||
res = processGetTracks(request.get_tracks(), *response.mutable_track_list());
|
res = processGetTracks(request.get_tracks(), *response.mutable_track_list());
|
||||||
if (res)
|
if (res)
|
||||||
response.set_type(AudioCollectionResponse_Type_TypeTrackList);
|
response.set_type(AudioCollectionResponse::TypeTrackList);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ class AudioCollectionRequestHandler
|
|||||||
static const std::size_t _maxListArtists = 256;
|
static const std::size_t _maxListArtists = 256;
|
||||||
static const std::size_t _maxListGenres = 256;
|
static const std::size_t _maxListGenres = 256;
|
||||||
static const std::size_t _maxListReleases = 256;
|
static const std::size_t _maxListReleases = 256;
|
||||||
static const std::size_t _maxListTracks = 256;
|
static const std::size_t _maxListTracks = 1024;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Remote
|
} // namespace Remote
|
||||||
|
|||||||
@@ -18,7 +18,8 @@ namespace Server {
|
|||||||
Connection::Connection(boost::asio::ip::tcp::socket socket,
|
Connection::Connection(boost::asio::ip::tcp::socket socket,
|
||||||
ConnectionManager& manager,
|
ConnectionManager& manager,
|
||||||
RequestHandler& handler)
|
RequestHandler& handler)
|
||||||
: _socket(std::move(socket)),
|
: _closing(false),
|
||||||
|
_socket(std::move(socket)),
|
||||||
_connectionManager(manager),
|
_connectionManager(manager),
|
||||||
_requestHandler(handler)
|
_requestHandler(handler)
|
||||||
{
|
{
|
||||||
@@ -47,8 +48,15 @@ Connection::start()
|
|||||||
void
|
void
|
||||||
Connection::stop()
|
Connection::stop()
|
||||||
{
|
{
|
||||||
std::cout << "Server::Connection::stop, Stopping connection" << std::endl;
|
if (!_closing)
|
||||||
_socket.close();
|
{
|
||||||
|
_closing = true;
|
||||||
|
std::cout << "Server::Connection::stop, Stopping connection " << this << std::endl;
|
||||||
|
_socket.close();
|
||||||
|
std::cout << "Server::Connection::stop, connection stopped " << this << std::endl;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
std::cout << "Close in progress..." << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -88,7 +96,7 @@ Connection::handleReadHeader(const boost::system::error_code& error, std::size_t
|
|||||||
}
|
}
|
||||||
else if (error != boost::asio::error::operation_aborted)
|
else if (error != boost::asio::error::operation_aborted)
|
||||||
{
|
{
|
||||||
std::cerr << "Connection::handleRead: " << error.message() << std::endl;
|
std::cerr << "Connection::handleReadHeader: " << error.message() << std::endl;
|
||||||
_connectionManager.stop(shared_from_this());
|
_connectionManager.stop(shared_from_this());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,6 +38,8 @@ class Connection : public std::enable_shared_from_this<Connection>
|
|||||||
void stop();
|
void stop();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
bool _closing;
|
||||||
|
|
||||||
/// Handle completion of a read operation.
|
/// Handle completion of a read operation.
|
||||||
void handleReadHeader(const boost::system::error_code& e,
|
void handleReadHeader(const boost::system::error_code& e,
|
||||||
std::size_t bytes_transferred);
|
std::size_t bytes_transferred);
|
||||||
|
|||||||
@@ -0,0 +1,176 @@
|
|||||||
|
#include "MediaRequestHandler.hpp"
|
||||||
|
|
||||||
|
#include "database/AudioTypes.hpp"
|
||||||
|
|
||||||
|
namespace Remote {
|
||||||
|
namespace Server {
|
||||||
|
|
||||||
|
MediaRequestHandler::MediaRequestHandler(DatabaseHandler& db)
|
||||||
|
: _db(db)
|
||||||
|
{}
|
||||||
|
|
||||||
|
bool
|
||||||
|
MediaRequestHandler::process(const MediaRequest& request, MediaResponse& response)
|
||||||
|
{
|
||||||
|
|
||||||
|
bool res = false;
|
||||||
|
|
||||||
|
switch (request.type())
|
||||||
|
{
|
||||||
|
case MediaRequest::TypeMediaPrepare:
|
||||||
|
if (request.has_prepare())
|
||||||
|
{
|
||||||
|
if (request.prepare().has_audio())
|
||||||
|
res = processAudioPrepare(request.prepare().audio(), response);
|
||||||
|
else if (request.prepare().has_video())
|
||||||
|
;// TODO;
|
||||||
|
else
|
||||||
|
std::cerr << "Bad MediaRequest::TypeMediaPrepare!" << std::endl;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
std::cerr << "Bad MediaRequest::TypeMediaPrepare!" << std::endl;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MediaRequest::TypeMediaGetPart:
|
||||||
|
if (request.has_get_part())
|
||||||
|
res = processGetPart(request.get_part(), response);
|
||||||
|
else
|
||||||
|
std::cerr << "Bad MediaRequest::TypeMediaGet!" << std::endl;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MediaRequest::TypeMediaTerminate:
|
||||||
|
if (request.has_terminate())
|
||||||
|
res = processTerminate(request.terminate(), response);
|
||||||
|
else
|
||||||
|
std::cerr << "Bad MediaRequest::TypeMediaTerminate!" << std::endl;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
std::cerr << "Unhandled MediaRequest type = " << request.type() << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
MediaRequestHandler::processAudioPrepare(const MediaRequest::Prepare::Audio& request, MediaResponse& response)
|
||||||
|
{
|
||||||
|
// TODO, get user default values
|
||||||
|
Transcode::Format::Encoding format = Transcode::Format::OGA;
|
||||||
|
std::size_t bitrate = 128000;
|
||||||
|
|
||||||
|
if (request.has_codec_type())
|
||||||
|
{
|
||||||
|
switch( request.codec_type())
|
||||||
|
{
|
||||||
|
case AudioCodecType::CodecTypeOGA:
|
||||||
|
format = Transcode::Format::OGA;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
std::cerr << "Unhandled codec type = " << request.codec_type() << std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (request.has_bitrate())
|
||||||
|
bitrate = request.bitrate();
|
||||||
|
|
||||||
|
if (_transcoder)
|
||||||
|
{
|
||||||
|
response.mutable_error()->set_error(true);
|
||||||
|
response.mutable_error()->set_message("Transcode already in progress");
|
||||||
|
response.set_type(MediaResponse::TypeError);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Wt::Dbo::Transaction transaction( _db.getSession());
|
||||||
|
|
||||||
|
Track::pointer track = Track::getById( _db.getSession(), request.track_id() );
|
||||||
|
|
||||||
|
if (!track)
|
||||||
|
{
|
||||||
|
response.mutable_error()->set_error(true);
|
||||||
|
response.mutable_error()->set_message("Cannot find requested track!");
|
||||||
|
response.set_type(MediaResponse::TypeError);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Transcode::InputMediaFile inputFile(track->getPath());
|
||||||
|
Transcode::Parameters parameters(inputFile, Transcode::Format::get( format ), bitrate);
|
||||||
|
|
||||||
|
_transcoder = std::make_shared<Transcode::AvConvTranscoder>( parameters );
|
||||||
|
|
||||||
|
response.mutable_error()->set_error(false);
|
||||||
|
response.mutable_error()->set_message("");
|
||||||
|
response.set_type(MediaResponse::TypeError);
|
||||||
|
}
|
||||||
|
catch(std::exception& e)
|
||||||
|
{
|
||||||
|
std::cerr << "Caught exception: " << e.what() << std::endl;
|
||||||
|
response.mutable_error()->set_error(true);
|
||||||
|
response.mutable_error()->set_message("exception: " + std::string(e.what()));
|
||||||
|
response.set_type(MediaResponse::TypeError);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
MediaRequestHandler::processGetPart(const MediaRequest::GetPart& request, MediaResponse& response)
|
||||||
|
{
|
||||||
|
std::size_t dataSize = request.requested_data_size();
|
||||||
|
if (dataSize > _maxPartSize)
|
||||||
|
dataSize = _maxPartSize;
|
||||||
|
|
||||||
|
if (!_transcoder)
|
||||||
|
{
|
||||||
|
response.mutable_error()->set_error(true);
|
||||||
|
response.mutable_error()->set_message("No transcoder set!");
|
||||||
|
response.set_type(MediaResponse::TypeError);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (!_transcoder->isComplete() && _transcoder->getOutputData().size() < dataSize)
|
||||||
|
_transcoder->process();
|
||||||
|
|
||||||
|
std::cout << "MediaRequestHandler::processGetPart, isComplete = " << std::boolalpha << _transcoder->isComplete() << ", size = " << _transcoder->getOutputData().size() << std::endl;
|
||||||
|
|
||||||
|
Transcode::AvConvTranscoder::data_type::iterator itEnd;
|
||||||
|
if (_transcoder->getOutputData().size() > dataSize)
|
||||||
|
itEnd = _transcoder->getOutputData().begin() + dataSize;
|
||||||
|
else
|
||||||
|
itEnd = _transcoder->getOutputData().end();
|
||||||
|
|
||||||
|
response.set_type(MediaResponse::TypePart);
|
||||||
|
std::copy(_transcoder->getOutputData().begin(), itEnd, std::back_inserter(*response.mutable_part()->mutable_data()));
|
||||||
|
|
||||||
|
// Consume sent bytes
|
||||||
|
_transcoder->getOutputData().erase(_transcoder->getOutputData().begin(), itEnd);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
MediaRequestHandler::processTerminate(const MediaRequest::Terminate& /*request*/, MediaResponse& response)
|
||||||
|
{
|
||||||
|
std::cout << "MediaRequestHandler: resetting transcoder" << std::endl;
|
||||||
|
_transcoder.reset();
|
||||||
|
|
||||||
|
assert(!_transcoder);
|
||||||
|
|
||||||
|
response.mutable_error()->set_error(false);
|
||||||
|
response.mutable_error()->set_message("");
|
||||||
|
response.set_type(MediaResponse::TypeError);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} // namespace Remote
|
||||||
|
} // namespace Server
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
#ifndef REMOTE_MEDIA_REQUEST_HANDLER
|
||||||
|
#define REMOTE_MEDIA_REQUEST_HANDLER
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
|
#include "messages/media.pb.h"
|
||||||
|
|
||||||
|
#include "database/DatabaseHandler.hpp"
|
||||||
|
#include "transcode/AvConvTranscoder.hpp"
|
||||||
|
|
||||||
|
namespace Remote {
|
||||||
|
namespace Server {
|
||||||
|
|
||||||
|
class MediaRequestHandler
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MediaRequestHandler(DatabaseHandler& db);
|
||||||
|
|
||||||
|
bool process(const MediaRequest& request, MediaResponse& response);
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
bool processAudioPrepare(const MediaRequest::Prepare::Audio& request, MediaResponse& response);
|
||||||
|
bool processGetPart(const MediaRequest::GetPart& request, MediaResponse& response);
|
||||||
|
bool processTerminate(const MediaRequest::Terminate& request, MediaResponse& response);
|
||||||
|
|
||||||
|
// bool processVideoPrepare(const AudioCollectionRequest::GetGenreList& request, AudioCollectionResponse::GenreList& response);
|
||||||
|
|
||||||
|
std::shared_ptr<Transcode::AvConvTranscoder> _transcoder;
|
||||||
|
|
||||||
|
DatabaseHandler& _db;
|
||||||
|
|
||||||
|
static const std::size_t _maxPartSize = 65536 - 128;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace Remote
|
||||||
|
} // namespace Server
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -6,7 +6,8 @@ namespace Server {
|
|||||||
|
|
||||||
RequestHandler::RequestHandler(boost::filesystem::path dbPath)
|
RequestHandler::RequestHandler(boost::filesystem::path dbPath)
|
||||||
: _db( dbPath ),
|
: _db( dbPath ),
|
||||||
_audioCollectionRequestHandler(_db)
|
_audioCollectionRequestHandler(_db),
|
||||||
|
_mediaRequestHandler(_db)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -26,13 +27,22 @@ RequestHandler::process(const ClientMessage& request, ServerMessage& response)
|
|||||||
{
|
{
|
||||||
res = _audioCollectionRequestHandler.process(request.audio_collection_request(), *response.mutable_audio_collection_response());
|
res = _audioCollectionRequestHandler.process(request.audio_collection_request(), *response.mutable_audio_collection_response());
|
||||||
if (res)
|
if (res)
|
||||||
response.set_type( ServerMessage_Type_AudioCollectionResponse);
|
response.set_type( ServerMessage::AudioCollectionResponse);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
std::cerr << "Malformed AudioCollectionRequest message!" << std::endl;
|
std::cerr << "Malformed AudioCollectionRequest message!" << std::endl;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ClientMessage_Type_MediaRequest:
|
case ClientMessage_Type_MediaRequest:
|
||||||
|
if (request.has_media_request())
|
||||||
|
{
|
||||||
|
res = _mediaRequestHandler.process(request.media_request(), *response.mutable_media_response());
|
||||||
|
if (res)
|
||||||
|
response.set_type( ServerMessage::MediaResponse);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
std::cerr << "Malformed AudioCollectionRequest message!" << std::endl;
|
||||||
|
break;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#include "database/DatabaseHandler.hpp"
|
#include "database/DatabaseHandler.hpp"
|
||||||
|
|
||||||
#include "AudioCollectionRequestHandler.hpp"
|
#include "AudioCollectionRequestHandler.hpp"
|
||||||
|
#include "MediaRequestHandler.hpp"
|
||||||
|
|
||||||
namespace Remote {
|
namespace Remote {
|
||||||
namespace Server {
|
namespace Server {
|
||||||
@@ -26,8 +27,8 @@ class RequestHandler
|
|||||||
|
|
||||||
DatabaseHandler _db;
|
DatabaseHandler _db;
|
||||||
|
|
||||||
AudioCollectionRequestHandler _audioCollectionRequestHandler;
|
AudioCollectionRequestHandler _audioCollectionRequestHandler;
|
||||||
|
MediaRequestHandler _mediaRequestHandler;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Server
|
} // namespace Server
|
||||||
|
|||||||
@@ -6,9 +6,16 @@ check_PROGRAMS = database-integrity sql-query database-basics remote
|
|||||||
remote_SOURCES = \
|
remote_SOURCES = \
|
||||||
$(srcdir)/RemoteClientServer.cpp \
|
$(srcdir)/RemoteClientServer.cpp \
|
||||||
$(srcdir)/TestDatabase.cpp \
|
$(srcdir)/TestDatabase.cpp \
|
||||||
|
$(top_srcdir)/av/CodecContext.cpp \
|
||||||
|
$(top_srcdir)/av/Common.cpp \
|
||||||
|
$(top_srcdir)/av/Dictionary.cpp \
|
||||||
|
$(top_srcdir)/av/FormatContext.cpp \
|
||||||
|
$(top_srcdir)/av/InputFormatContext.cpp \
|
||||||
|
$(top_srcdir)/av/Stream.cpp \
|
||||||
$(top_srcdir)/remote/server/Server.cpp \
|
$(top_srcdir)/remote/server/Server.cpp \
|
||||||
$(top_srcdir)/remote/server/RequestHandler.cpp \
|
$(top_srcdir)/remote/server/RequestHandler.cpp \
|
||||||
$(top_srcdir)/remote/server/AudioCollectionRequestHandler.cpp \
|
$(top_srcdir)/remote/server/AudioCollectionRequestHandler.cpp \
|
||||||
|
$(top_srcdir)/remote/server/MediaRequestHandler.cpp \
|
||||||
$(top_srcdir)/remote/server/ConnectionManager.cpp \
|
$(top_srcdir)/remote/server/ConnectionManager.cpp \
|
||||||
$(top_srcdir)/remote/server/Connection.cpp \
|
$(top_srcdir)/remote/server/Connection.cpp \
|
||||||
$(top_srcdir)/remote/messages/auth.pb.cc \
|
$(top_srcdir)/remote/messages/auth.pb.cc \
|
||||||
@@ -16,6 +23,10 @@ remote_SOURCES = \
|
|||||||
$(top_srcdir)/remote/messages/common.pb.cc \
|
$(top_srcdir)/remote/messages/common.pb.cc \
|
||||||
$(top_srcdir)/remote/messages/media.pb.cc \
|
$(top_srcdir)/remote/messages/media.pb.cc \
|
||||||
$(top_srcdir)/remote/messages/messages.pb.cc \
|
$(top_srcdir)/remote/messages/messages.pb.cc \
|
||||||
|
$(top_srcdir)/transcode/AvConvTranscoder.cpp \
|
||||||
|
$(top_srcdir)/transcode/Format.cpp \
|
||||||
|
$(top_srcdir)/transcode/Parameters.cpp \
|
||||||
|
$(top_srcdir)/transcode/InputMediaFile.cpp \
|
||||||
$(top_srcdir)/database/Artist.cpp \
|
$(top_srcdir)/database/Artist.cpp \
|
||||||
$(top_srcdir)/database/Genre.cpp \
|
$(top_srcdir)/database/Genre.cpp \
|
||||||
$(top_srcdir)/database/Release.cpp \
|
$(top_srcdir)/database/Release.cpp \
|
||||||
|
|||||||
+185
-3
@@ -120,13 +120,19 @@ database_integrity_LDADD = $(LDADD)
|
|||||||
database_integrity_LINK = $(CXXLD) $(database_integrity_CXXFLAGS) \
|
database_integrity_LINK = $(CXXLD) $(database_integrity_CXXFLAGS) \
|
||||||
$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
am_remote_OBJECTS = remote-RemoteClientServer.$(OBJEXT) \
|
am_remote_OBJECTS = remote-RemoteClientServer.$(OBJEXT) \
|
||||||
remote-TestDatabase.$(OBJEXT) remote-Server.$(OBJEXT) \
|
remote-TestDatabase.$(OBJEXT) remote-CodecContext.$(OBJEXT) \
|
||||||
remote-RequestHandler.$(OBJEXT) \
|
remote-Common.$(OBJEXT) remote-Dictionary.$(OBJEXT) \
|
||||||
|
remote-FormatContext.$(OBJEXT) \
|
||||||
|
remote-InputFormatContext.$(OBJEXT) remote-Stream.$(OBJEXT) \
|
||||||
|
remote-Server.$(OBJEXT) remote-RequestHandler.$(OBJEXT) \
|
||||||
remote-AudioCollectionRequestHandler.$(OBJEXT) \
|
remote-AudioCollectionRequestHandler.$(OBJEXT) \
|
||||||
|
remote-MediaRequestHandler.$(OBJEXT) \
|
||||||
remote-ConnectionManager.$(OBJEXT) remote-Connection.$(OBJEXT) \
|
remote-ConnectionManager.$(OBJEXT) remote-Connection.$(OBJEXT) \
|
||||||
remote-auth.pb.$(OBJEXT) remote-collection.pb.$(OBJEXT) \
|
remote-auth.pb.$(OBJEXT) remote-collection.pb.$(OBJEXT) \
|
||||||
remote-common.pb.$(OBJEXT) remote-media.pb.$(OBJEXT) \
|
remote-common.pb.$(OBJEXT) remote-media.pb.$(OBJEXT) \
|
||||||
remote-messages.pb.$(OBJEXT) remote-Artist.$(OBJEXT) \
|
remote-messages.pb.$(OBJEXT) remote-AvConvTranscoder.$(OBJEXT) \
|
||||||
|
remote-Format.$(OBJEXT) remote-Parameters.$(OBJEXT) \
|
||||||
|
remote-InputMediaFile.$(OBJEXT) remote-Artist.$(OBJEXT) \
|
||||||
remote-Genre.$(OBJEXT) remote-Release.$(OBJEXT) \
|
remote-Genre.$(OBJEXT) remote-Release.$(OBJEXT) \
|
||||||
remote-Track.$(OBJEXT) remote-DatabaseHandler.$(OBJEXT) \
|
remote-Track.$(OBJEXT) remote-DatabaseHandler.$(OBJEXT) \
|
||||||
remote-SqlQuery.$(OBJEXT) remote-Path.$(OBJEXT) \
|
remote-SqlQuery.$(OBJEXT) remote-Path.$(OBJEXT) \
|
||||||
@@ -498,9 +504,16 @@ top_srcdir = @top_srcdir@
|
|||||||
remote_SOURCES = \
|
remote_SOURCES = \
|
||||||
$(srcdir)/RemoteClientServer.cpp \
|
$(srcdir)/RemoteClientServer.cpp \
|
||||||
$(srcdir)/TestDatabase.cpp \
|
$(srcdir)/TestDatabase.cpp \
|
||||||
|
$(top_srcdir)/av/CodecContext.cpp \
|
||||||
|
$(top_srcdir)/av/Common.cpp \
|
||||||
|
$(top_srcdir)/av/Dictionary.cpp \
|
||||||
|
$(top_srcdir)/av/FormatContext.cpp \
|
||||||
|
$(top_srcdir)/av/InputFormatContext.cpp \
|
||||||
|
$(top_srcdir)/av/Stream.cpp \
|
||||||
$(top_srcdir)/remote/server/Server.cpp \
|
$(top_srcdir)/remote/server/Server.cpp \
|
||||||
$(top_srcdir)/remote/server/RequestHandler.cpp \
|
$(top_srcdir)/remote/server/RequestHandler.cpp \
|
||||||
$(top_srcdir)/remote/server/AudioCollectionRequestHandler.cpp \
|
$(top_srcdir)/remote/server/AudioCollectionRequestHandler.cpp \
|
||||||
|
$(top_srcdir)/remote/server/MediaRequestHandler.cpp \
|
||||||
$(top_srcdir)/remote/server/ConnectionManager.cpp \
|
$(top_srcdir)/remote/server/ConnectionManager.cpp \
|
||||||
$(top_srcdir)/remote/server/Connection.cpp \
|
$(top_srcdir)/remote/server/Connection.cpp \
|
||||||
$(top_srcdir)/remote/messages/auth.pb.cc \
|
$(top_srcdir)/remote/messages/auth.pb.cc \
|
||||||
@@ -508,6 +521,10 @@ remote_SOURCES = \
|
|||||||
$(top_srcdir)/remote/messages/common.pb.cc \
|
$(top_srcdir)/remote/messages/common.pb.cc \
|
||||||
$(top_srcdir)/remote/messages/media.pb.cc \
|
$(top_srcdir)/remote/messages/media.pb.cc \
|
||||||
$(top_srcdir)/remote/messages/messages.pb.cc \
|
$(top_srcdir)/remote/messages/messages.pb.cc \
|
||||||
|
$(top_srcdir)/transcode/AvConvTranscoder.cpp \
|
||||||
|
$(top_srcdir)/transcode/Format.cpp \
|
||||||
|
$(top_srcdir)/transcode/Parameters.cpp \
|
||||||
|
$(top_srcdir)/transcode/InputMediaFile.cpp \
|
||||||
$(top_srcdir)/database/Artist.cpp \
|
$(top_srcdir)/database/Artist.cpp \
|
||||||
$(top_srcdir)/database/Genre.cpp \
|
$(top_srcdir)/database/Genre.cpp \
|
||||||
$(top_srcdir)/database/Release.cpp \
|
$(top_srcdir)/database/Release.cpp \
|
||||||
@@ -632,17 +649,28 @@ distclean-compile:
|
|||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/database_integrity-Video.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/database_integrity-Video.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Artist.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Artist.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-AudioCollectionRequestHandler.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-AudioCollectionRequestHandler.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-AvConvTranscoder.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Checksum.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Checksum.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-CodecContext.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Common.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Connection.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Connection.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-ConnectionManager.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-ConnectionManager.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-DatabaseHandler.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-DatabaseHandler.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Dictionary.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Format.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-FormatContext.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Genre.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Genre.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-InputFormatContext.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-InputMediaFile.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-MediaRequestHandler.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Parameters.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Path.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Path.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Release.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Release.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-RemoteClientServer.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-RemoteClientServer.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-RequestHandler.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-RequestHandler.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Server.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Server.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-SqlQuery.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-SqlQuery.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Stream.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-TestDatabase.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-TestDatabase.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Track.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Track.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Video.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Video.Po@am__quote@
|
||||||
@@ -976,6 +1004,90 @@ remote-TestDatabase.obj: $(srcdir)/TestDatabase.cpp
|
|||||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-TestDatabase.obj `if test -f '$(srcdir)/TestDatabase.cpp'; then $(CYGPATH_W) '$(srcdir)/TestDatabase.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/TestDatabase.cpp'; fi`
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-TestDatabase.obj `if test -f '$(srcdir)/TestDatabase.cpp'; then $(CYGPATH_W) '$(srcdir)/TestDatabase.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/TestDatabase.cpp'; fi`
|
||||||
|
|
||||||
|
remote-CodecContext.o: $(top_srcdir)/av/CodecContext.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-CodecContext.o -MD -MP -MF $(DEPDIR)/remote-CodecContext.Tpo -c -o remote-CodecContext.o `test -f '$(top_srcdir)/av/CodecContext.cpp' || echo '$(srcdir)/'`$(top_srcdir)/av/CodecContext.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-CodecContext.Tpo $(DEPDIR)/remote-CodecContext.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/av/CodecContext.cpp' object='remote-CodecContext.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-CodecContext.o `test -f '$(top_srcdir)/av/CodecContext.cpp' || echo '$(srcdir)/'`$(top_srcdir)/av/CodecContext.cpp
|
||||||
|
|
||||||
|
remote-CodecContext.obj: $(top_srcdir)/av/CodecContext.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-CodecContext.obj -MD -MP -MF $(DEPDIR)/remote-CodecContext.Tpo -c -o remote-CodecContext.obj `if test -f '$(top_srcdir)/av/CodecContext.cpp'; then $(CYGPATH_W) '$(top_srcdir)/av/CodecContext.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/av/CodecContext.cpp'; fi`
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-CodecContext.Tpo $(DEPDIR)/remote-CodecContext.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/av/CodecContext.cpp' object='remote-CodecContext.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-CodecContext.obj `if test -f '$(top_srcdir)/av/CodecContext.cpp'; then $(CYGPATH_W) '$(top_srcdir)/av/CodecContext.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/av/CodecContext.cpp'; fi`
|
||||||
|
|
||||||
|
remote-Common.o: $(top_srcdir)/av/Common.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-Common.o -MD -MP -MF $(DEPDIR)/remote-Common.Tpo -c -o remote-Common.o `test -f '$(top_srcdir)/av/Common.cpp' || echo '$(srcdir)/'`$(top_srcdir)/av/Common.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-Common.Tpo $(DEPDIR)/remote-Common.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/av/Common.cpp' object='remote-Common.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-Common.o `test -f '$(top_srcdir)/av/Common.cpp' || echo '$(srcdir)/'`$(top_srcdir)/av/Common.cpp
|
||||||
|
|
||||||
|
remote-Common.obj: $(top_srcdir)/av/Common.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-Common.obj -MD -MP -MF $(DEPDIR)/remote-Common.Tpo -c -o remote-Common.obj `if test -f '$(top_srcdir)/av/Common.cpp'; then $(CYGPATH_W) '$(top_srcdir)/av/Common.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/av/Common.cpp'; fi`
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-Common.Tpo $(DEPDIR)/remote-Common.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/av/Common.cpp' object='remote-Common.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-Common.obj `if test -f '$(top_srcdir)/av/Common.cpp'; then $(CYGPATH_W) '$(top_srcdir)/av/Common.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/av/Common.cpp'; fi`
|
||||||
|
|
||||||
|
remote-Dictionary.o: $(top_srcdir)/av/Dictionary.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-Dictionary.o -MD -MP -MF $(DEPDIR)/remote-Dictionary.Tpo -c -o remote-Dictionary.o `test -f '$(top_srcdir)/av/Dictionary.cpp' || echo '$(srcdir)/'`$(top_srcdir)/av/Dictionary.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-Dictionary.Tpo $(DEPDIR)/remote-Dictionary.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/av/Dictionary.cpp' object='remote-Dictionary.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-Dictionary.o `test -f '$(top_srcdir)/av/Dictionary.cpp' || echo '$(srcdir)/'`$(top_srcdir)/av/Dictionary.cpp
|
||||||
|
|
||||||
|
remote-Dictionary.obj: $(top_srcdir)/av/Dictionary.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-Dictionary.obj -MD -MP -MF $(DEPDIR)/remote-Dictionary.Tpo -c -o remote-Dictionary.obj `if test -f '$(top_srcdir)/av/Dictionary.cpp'; then $(CYGPATH_W) '$(top_srcdir)/av/Dictionary.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/av/Dictionary.cpp'; fi`
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-Dictionary.Tpo $(DEPDIR)/remote-Dictionary.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/av/Dictionary.cpp' object='remote-Dictionary.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-Dictionary.obj `if test -f '$(top_srcdir)/av/Dictionary.cpp'; then $(CYGPATH_W) '$(top_srcdir)/av/Dictionary.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/av/Dictionary.cpp'; fi`
|
||||||
|
|
||||||
|
remote-FormatContext.o: $(top_srcdir)/av/FormatContext.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-FormatContext.o -MD -MP -MF $(DEPDIR)/remote-FormatContext.Tpo -c -o remote-FormatContext.o `test -f '$(top_srcdir)/av/FormatContext.cpp' || echo '$(srcdir)/'`$(top_srcdir)/av/FormatContext.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-FormatContext.Tpo $(DEPDIR)/remote-FormatContext.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/av/FormatContext.cpp' object='remote-FormatContext.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-FormatContext.o `test -f '$(top_srcdir)/av/FormatContext.cpp' || echo '$(srcdir)/'`$(top_srcdir)/av/FormatContext.cpp
|
||||||
|
|
||||||
|
remote-FormatContext.obj: $(top_srcdir)/av/FormatContext.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-FormatContext.obj -MD -MP -MF $(DEPDIR)/remote-FormatContext.Tpo -c -o remote-FormatContext.obj `if test -f '$(top_srcdir)/av/FormatContext.cpp'; then $(CYGPATH_W) '$(top_srcdir)/av/FormatContext.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/av/FormatContext.cpp'; fi`
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-FormatContext.Tpo $(DEPDIR)/remote-FormatContext.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/av/FormatContext.cpp' object='remote-FormatContext.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-FormatContext.obj `if test -f '$(top_srcdir)/av/FormatContext.cpp'; then $(CYGPATH_W) '$(top_srcdir)/av/FormatContext.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/av/FormatContext.cpp'; fi`
|
||||||
|
|
||||||
|
remote-InputFormatContext.o: $(top_srcdir)/av/InputFormatContext.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-InputFormatContext.o -MD -MP -MF $(DEPDIR)/remote-InputFormatContext.Tpo -c -o remote-InputFormatContext.o `test -f '$(top_srcdir)/av/InputFormatContext.cpp' || echo '$(srcdir)/'`$(top_srcdir)/av/InputFormatContext.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-InputFormatContext.Tpo $(DEPDIR)/remote-InputFormatContext.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/av/InputFormatContext.cpp' object='remote-InputFormatContext.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-InputFormatContext.o `test -f '$(top_srcdir)/av/InputFormatContext.cpp' || echo '$(srcdir)/'`$(top_srcdir)/av/InputFormatContext.cpp
|
||||||
|
|
||||||
|
remote-InputFormatContext.obj: $(top_srcdir)/av/InputFormatContext.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-InputFormatContext.obj -MD -MP -MF $(DEPDIR)/remote-InputFormatContext.Tpo -c -o remote-InputFormatContext.obj `if test -f '$(top_srcdir)/av/InputFormatContext.cpp'; then $(CYGPATH_W) '$(top_srcdir)/av/InputFormatContext.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/av/InputFormatContext.cpp'; fi`
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-InputFormatContext.Tpo $(DEPDIR)/remote-InputFormatContext.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/av/InputFormatContext.cpp' object='remote-InputFormatContext.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-InputFormatContext.obj `if test -f '$(top_srcdir)/av/InputFormatContext.cpp'; then $(CYGPATH_W) '$(top_srcdir)/av/InputFormatContext.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/av/InputFormatContext.cpp'; fi`
|
||||||
|
|
||||||
|
remote-Stream.o: $(top_srcdir)/av/Stream.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-Stream.o -MD -MP -MF $(DEPDIR)/remote-Stream.Tpo -c -o remote-Stream.o `test -f '$(top_srcdir)/av/Stream.cpp' || echo '$(srcdir)/'`$(top_srcdir)/av/Stream.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-Stream.Tpo $(DEPDIR)/remote-Stream.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/av/Stream.cpp' object='remote-Stream.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-Stream.o `test -f '$(top_srcdir)/av/Stream.cpp' || echo '$(srcdir)/'`$(top_srcdir)/av/Stream.cpp
|
||||||
|
|
||||||
|
remote-Stream.obj: $(top_srcdir)/av/Stream.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-Stream.obj -MD -MP -MF $(DEPDIR)/remote-Stream.Tpo -c -o remote-Stream.obj `if test -f '$(top_srcdir)/av/Stream.cpp'; then $(CYGPATH_W) '$(top_srcdir)/av/Stream.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/av/Stream.cpp'; fi`
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-Stream.Tpo $(DEPDIR)/remote-Stream.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/av/Stream.cpp' object='remote-Stream.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-Stream.obj `if test -f '$(top_srcdir)/av/Stream.cpp'; then $(CYGPATH_W) '$(top_srcdir)/av/Stream.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/av/Stream.cpp'; fi`
|
||||||
|
|
||||||
remote-Server.o: $(top_srcdir)/remote/server/Server.cpp
|
remote-Server.o: $(top_srcdir)/remote/server/Server.cpp
|
||||||
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-Server.o -MD -MP -MF $(DEPDIR)/remote-Server.Tpo -c -o remote-Server.o `test -f '$(top_srcdir)/remote/server/Server.cpp' || echo '$(srcdir)/'`$(top_srcdir)/remote/server/Server.cpp
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-Server.o -MD -MP -MF $(DEPDIR)/remote-Server.Tpo -c -o remote-Server.o `test -f '$(top_srcdir)/remote/server/Server.cpp' || echo '$(srcdir)/'`$(top_srcdir)/remote/server/Server.cpp
|
||||||
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-Server.Tpo $(DEPDIR)/remote-Server.Po
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-Server.Tpo $(DEPDIR)/remote-Server.Po
|
||||||
@@ -1018,6 +1130,20 @@ remote-AudioCollectionRequestHandler.obj: $(top_srcdir)/remote/server/AudioColle
|
|||||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-AudioCollectionRequestHandler.obj `if test -f '$(top_srcdir)/remote/server/AudioCollectionRequestHandler.cpp'; then $(CYGPATH_W) '$(top_srcdir)/remote/server/AudioCollectionRequestHandler.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/remote/server/AudioCollectionRequestHandler.cpp'; fi`
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-AudioCollectionRequestHandler.obj `if test -f '$(top_srcdir)/remote/server/AudioCollectionRequestHandler.cpp'; then $(CYGPATH_W) '$(top_srcdir)/remote/server/AudioCollectionRequestHandler.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/remote/server/AudioCollectionRequestHandler.cpp'; fi`
|
||||||
|
|
||||||
|
remote-MediaRequestHandler.o: $(top_srcdir)/remote/server/MediaRequestHandler.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-MediaRequestHandler.o -MD -MP -MF $(DEPDIR)/remote-MediaRequestHandler.Tpo -c -o remote-MediaRequestHandler.o `test -f '$(top_srcdir)/remote/server/MediaRequestHandler.cpp' || echo '$(srcdir)/'`$(top_srcdir)/remote/server/MediaRequestHandler.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-MediaRequestHandler.Tpo $(DEPDIR)/remote-MediaRequestHandler.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/remote/server/MediaRequestHandler.cpp' object='remote-MediaRequestHandler.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-MediaRequestHandler.o `test -f '$(top_srcdir)/remote/server/MediaRequestHandler.cpp' || echo '$(srcdir)/'`$(top_srcdir)/remote/server/MediaRequestHandler.cpp
|
||||||
|
|
||||||
|
remote-MediaRequestHandler.obj: $(top_srcdir)/remote/server/MediaRequestHandler.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-MediaRequestHandler.obj -MD -MP -MF $(DEPDIR)/remote-MediaRequestHandler.Tpo -c -o remote-MediaRequestHandler.obj `if test -f '$(top_srcdir)/remote/server/MediaRequestHandler.cpp'; then $(CYGPATH_W) '$(top_srcdir)/remote/server/MediaRequestHandler.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/remote/server/MediaRequestHandler.cpp'; fi`
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-MediaRequestHandler.Tpo $(DEPDIR)/remote-MediaRequestHandler.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/remote/server/MediaRequestHandler.cpp' object='remote-MediaRequestHandler.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-MediaRequestHandler.obj `if test -f '$(top_srcdir)/remote/server/MediaRequestHandler.cpp'; then $(CYGPATH_W) '$(top_srcdir)/remote/server/MediaRequestHandler.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/remote/server/MediaRequestHandler.cpp'; fi`
|
||||||
|
|
||||||
remote-ConnectionManager.o: $(top_srcdir)/remote/server/ConnectionManager.cpp
|
remote-ConnectionManager.o: $(top_srcdir)/remote/server/ConnectionManager.cpp
|
||||||
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-ConnectionManager.o -MD -MP -MF $(DEPDIR)/remote-ConnectionManager.Tpo -c -o remote-ConnectionManager.o `test -f '$(top_srcdir)/remote/server/ConnectionManager.cpp' || echo '$(srcdir)/'`$(top_srcdir)/remote/server/ConnectionManager.cpp
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-ConnectionManager.o -MD -MP -MF $(DEPDIR)/remote-ConnectionManager.Tpo -c -o remote-ConnectionManager.o `test -f '$(top_srcdir)/remote/server/ConnectionManager.cpp' || echo '$(srcdir)/'`$(top_srcdir)/remote/server/ConnectionManager.cpp
|
||||||
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-ConnectionManager.Tpo $(DEPDIR)/remote-ConnectionManager.Po
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-ConnectionManager.Tpo $(DEPDIR)/remote-ConnectionManager.Po
|
||||||
@@ -1116,6 +1242,62 @@ remote-messages.pb.obj: $(top_srcdir)/remote/messages/messages.pb.cc
|
|||||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-messages.pb.obj `if test -f '$(top_srcdir)/remote/messages/messages.pb.cc'; then $(CYGPATH_W) '$(top_srcdir)/remote/messages/messages.pb.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/remote/messages/messages.pb.cc'; fi`
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-messages.pb.obj `if test -f '$(top_srcdir)/remote/messages/messages.pb.cc'; then $(CYGPATH_W) '$(top_srcdir)/remote/messages/messages.pb.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/remote/messages/messages.pb.cc'; fi`
|
||||||
|
|
||||||
|
remote-AvConvTranscoder.o: $(top_srcdir)/transcode/AvConvTranscoder.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-AvConvTranscoder.o -MD -MP -MF $(DEPDIR)/remote-AvConvTranscoder.Tpo -c -o remote-AvConvTranscoder.o `test -f '$(top_srcdir)/transcode/AvConvTranscoder.cpp' || echo '$(srcdir)/'`$(top_srcdir)/transcode/AvConvTranscoder.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-AvConvTranscoder.Tpo $(DEPDIR)/remote-AvConvTranscoder.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/transcode/AvConvTranscoder.cpp' object='remote-AvConvTranscoder.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-AvConvTranscoder.o `test -f '$(top_srcdir)/transcode/AvConvTranscoder.cpp' || echo '$(srcdir)/'`$(top_srcdir)/transcode/AvConvTranscoder.cpp
|
||||||
|
|
||||||
|
remote-AvConvTranscoder.obj: $(top_srcdir)/transcode/AvConvTranscoder.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-AvConvTranscoder.obj -MD -MP -MF $(DEPDIR)/remote-AvConvTranscoder.Tpo -c -o remote-AvConvTranscoder.obj `if test -f '$(top_srcdir)/transcode/AvConvTranscoder.cpp'; then $(CYGPATH_W) '$(top_srcdir)/transcode/AvConvTranscoder.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/transcode/AvConvTranscoder.cpp'; fi`
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-AvConvTranscoder.Tpo $(DEPDIR)/remote-AvConvTranscoder.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/transcode/AvConvTranscoder.cpp' object='remote-AvConvTranscoder.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-AvConvTranscoder.obj `if test -f '$(top_srcdir)/transcode/AvConvTranscoder.cpp'; then $(CYGPATH_W) '$(top_srcdir)/transcode/AvConvTranscoder.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/transcode/AvConvTranscoder.cpp'; fi`
|
||||||
|
|
||||||
|
remote-Format.o: $(top_srcdir)/transcode/Format.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-Format.o -MD -MP -MF $(DEPDIR)/remote-Format.Tpo -c -o remote-Format.o `test -f '$(top_srcdir)/transcode/Format.cpp' || echo '$(srcdir)/'`$(top_srcdir)/transcode/Format.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-Format.Tpo $(DEPDIR)/remote-Format.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/transcode/Format.cpp' object='remote-Format.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-Format.o `test -f '$(top_srcdir)/transcode/Format.cpp' || echo '$(srcdir)/'`$(top_srcdir)/transcode/Format.cpp
|
||||||
|
|
||||||
|
remote-Format.obj: $(top_srcdir)/transcode/Format.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-Format.obj -MD -MP -MF $(DEPDIR)/remote-Format.Tpo -c -o remote-Format.obj `if test -f '$(top_srcdir)/transcode/Format.cpp'; then $(CYGPATH_W) '$(top_srcdir)/transcode/Format.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/transcode/Format.cpp'; fi`
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-Format.Tpo $(DEPDIR)/remote-Format.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/transcode/Format.cpp' object='remote-Format.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-Format.obj `if test -f '$(top_srcdir)/transcode/Format.cpp'; then $(CYGPATH_W) '$(top_srcdir)/transcode/Format.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/transcode/Format.cpp'; fi`
|
||||||
|
|
||||||
|
remote-Parameters.o: $(top_srcdir)/transcode/Parameters.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-Parameters.o -MD -MP -MF $(DEPDIR)/remote-Parameters.Tpo -c -o remote-Parameters.o `test -f '$(top_srcdir)/transcode/Parameters.cpp' || echo '$(srcdir)/'`$(top_srcdir)/transcode/Parameters.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-Parameters.Tpo $(DEPDIR)/remote-Parameters.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/transcode/Parameters.cpp' object='remote-Parameters.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-Parameters.o `test -f '$(top_srcdir)/transcode/Parameters.cpp' || echo '$(srcdir)/'`$(top_srcdir)/transcode/Parameters.cpp
|
||||||
|
|
||||||
|
remote-Parameters.obj: $(top_srcdir)/transcode/Parameters.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-Parameters.obj -MD -MP -MF $(DEPDIR)/remote-Parameters.Tpo -c -o remote-Parameters.obj `if test -f '$(top_srcdir)/transcode/Parameters.cpp'; then $(CYGPATH_W) '$(top_srcdir)/transcode/Parameters.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/transcode/Parameters.cpp'; fi`
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-Parameters.Tpo $(DEPDIR)/remote-Parameters.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/transcode/Parameters.cpp' object='remote-Parameters.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-Parameters.obj `if test -f '$(top_srcdir)/transcode/Parameters.cpp'; then $(CYGPATH_W) '$(top_srcdir)/transcode/Parameters.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/transcode/Parameters.cpp'; fi`
|
||||||
|
|
||||||
|
remote-InputMediaFile.o: $(top_srcdir)/transcode/InputMediaFile.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-InputMediaFile.o -MD -MP -MF $(DEPDIR)/remote-InputMediaFile.Tpo -c -o remote-InputMediaFile.o `test -f '$(top_srcdir)/transcode/InputMediaFile.cpp' || echo '$(srcdir)/'`$(top_srcdir)/transcode/InputMediaFile.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-InputMediaFile.Tpo $(DEPDIR)/remote-InputMediaFile.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/transcode/InputMediaFile.cpp' object='remote-InputMediaFile.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-InputMediaFile.o `test -f '$(top_srcdir)/transcode/InputMediaFile.cpp' || echo '$(srcdir)/'`$(top_srcdir)/transcode/InputMediaFile.cpp
|
||||||
|
|
||||||
|
remote-InputMediaFile.obj: $(top_srcdir)/transcode/InputMediaFile.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-InputMediaFile.obj -MD -MP -MF $(DEPDIR)/remote-InputMediaFile.Tpo -c -o remote-InputMediaFile.obj `if test -f '$(top_srcdir)/transcode/InputMediaFile.cpp'; then $(CYGPATH_W) '$(top_srcdir)/transcode/InputMediaFile.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/transcode/InputMediaFile.cpp'; fi`
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-InputMediaFile.Tpo $(DEPDIR)/remote-InputMediaFile.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/transcode/InputMediaFile.cpp' object='remote-InputMediaFile.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-InputMediaFile.obj `if test -f '$(top_srcdir)/transcode/InputMediaFile.cpp'; then $(CYGPATH_W) '$(top_srcdir)/transcode/InputMediaFile.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/transcode/InputMediaFile.cpp'; fi`
|
||||||
|
|
||||||
remote-Artist.o: $(top_srcdir)/database/Artist.cpp
|
remote-Artist.o: $(top_srcdir)/database/Artist.cpp
|
||||||
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-Artist.o -MD -MP -MF $(DEPDIR)/remote-Artist.Tpo -c -o remote-Artist.o `test -f '$(top_srcdir)/database/Artist.cpp' || echo '$(srcdir)/'`$(top_srcdir)/database/Artist.cpp
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-Artist.o -MD -MP -MF $(DEPDIR)/remote-Artist.Tpo -c -o remote-Artist.o `test -f '$(top_srcdir)/database/Artist.cpp' || echo '$(srcdir)/'`$(top_srcdir)/database/Artist.cpp
|
||||||
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-Artist.Tpo $(DEPDIR)/remote-Artist.Po
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-Artist.Tpo $(DEPDIR)/remote-Artist.Po
|
||||||
|
|||||||
+194
-22
@@ -1,6 +1,7 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
#include <boost/filesystem.hpp>
|
#include <boost/filesystem.hpp>
|
||||||
#include <boost/asio.hpp>
|
#include <boost/asio.hpp>
|
||||||
@@ -10,6 +11,8 @@
|
|||||||
#include "remote/messages/Header.hpp"
|
#include "remote/messages/Header.hpp"
|
||||||
#include "remote/messages/messages.pb.h"
|
#include "remote/messages/messages.pb.h"
|
||||||
|
|
||||||
|
#include "av/Common.hpp"
|
||||||
|
|
||||||
#include "TestDatabase.hpp"
|
#include "TestDatabase.hpp"
|
||||||
|
|
||||||
struct GenreInfo
|
struct GenreInfo
|
||||||
@@ -85,9 +88,9 @@ class TestServer
|
|||||||
_server.run();
|
_server.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
void stop()
|
~TestServer()
|
||||||
{
|
{
|
||||||
_ioService.stop();
|
_server.stop();
|
||||||
_thread.join();
|
_thread.join();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -172,7 +175,7 @@ class TestClient
|
|||||||
void getGenres(std::vector<GenreInfo>& genres)
|
void getGenres(std::vector<GenreInfo>& genres)
|
||||||
{
|
{
|
||||||
|
|
||||||
const std::size_t requestedBatchSize = 128;
|
const std::size_t requestedBatchSize = 8;
|
||||||
std::size_t offset = 0;
|
std::size_t offset = 0;
|
||||||
std::size_t res = 0;
|
std::size_t res = 0;
|
||||||
|
|
||||||
@@ -225,7 +228,7 @@ class TestClient
|
|||||||
void getReleases(std::vector<ReleaseInfo>& releases, const std::vector<uint64_t> artistIds)
|
void getReleases(std::vector<ReleaseInfo>& releases, const std::vector<uint64_t> artistIds)
|
||||||
{
|
{
|
||||||
|
|
||||||
const std::size_t requestedBatchSize = 128;
|
const std::size_t requestedBatchSize = 256;
|
||||||
std::size_t offset = 0;
|
std::size_t offset = 0;
|
||||||
std::size_t res = 0;
|
std::size_t res = 0;
|
||||||
|
|
||||||
@@ -281,7 +284,7 @@ class TestClient
|
|||||||
|
|
||||||
void getTracks(std::vector<TrackInfo>& tracks, const std::vector<uint64_t> artistIds, const std::vector<uint64_t> releaseIds, const std::vector<uint64_t> genreIds)
|
void getTracks(std::vector<TrackInfo>& tracks, const std::vector<uint64_t> artistIds, const std::vector<uint64_t> releaseIds, const std::vector<uint64_t> genreIds)
|
||||||
{
|
{
|
||||||
const std::size_t requestedBatchSize = 256;
|
const std::size_t requestedBatchSize = 0;
|
||||||
std::size_t offset = 0;
|
std::size_t offset = 0;
|
||||||
std::size_t res = 0;
|
std::size_t res = 0;
|
||||||
|
|
||||||
@@ -342,8 +345,154 @@ class TestClient
|
|||||||
return nbAdded;
|
return nbAdded;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void getMediaAudio(uint64_t audioId, std::vector<unsigned char>& data)
|
||||||
|
{
|
||||||
|
|
||||||
|
// Prepare
|
||||||
|
mediaAudioPrepare( audioId );
|
||||||
|
|
||||||
|
// Get while available
|
||||||
|
mediaGet( data );
|
||||||
|
|
||||||
|
// Terminate
|
||||||
|
mediaTerminate();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
void mediaAudioPrepare(uint64_t audioId)
|
||||||
|
{
|
||||||
|
|
||||||
|
// Send request
|
||||||
|
Remote::ClientMessage request;
|
||||||
|
|
||||||
|
request.set_type( Remote::ClientMessage_Type_MediaRequest);
|
||||||
|
|
||||||
|
request.mutable_media_request()->set_type( Remote::MediaRequest_Type_TypeMediaPrepare);
|
||||||
|
request.mutable_media_request()->mutable_prepare()->set_type(Remote::MediaRequest_Prepare_Type_AudioRequest);
|
||||||
|
|
||||||
|
// Set fields
|
||||||
|
request.mutable_media_request()->mutable_prepare()->mutable_audio()->set_track_id( audioId );
|
||||||
|
|
||||||
|
std::cout << "Sending prepare request" << std::endl;
|
||||||
|
sendMsg(request);
|
||||||
|
|
||||||
|
std::cout << "Waiting for response" << std::endl;
|
||||||
|
// Receive response
|
||||||
|
Remote::ServerMessage response;
|
||||||
|
recvMsg(response);
|
||||||
|
|
||||||
|
std::cout << "Got a response" << std::endl;
|
||||||
|
|
||||||
|
// Process message
|
||||||
|
if (!response.has_media_response())
|
||||||
|
throw std::runtime_error("Preapre: not an media reponse!");
|
||||||
|
|
||||||
|
if (!response.media_response().has_error())
|
||||||
|
throw std::runtime_error("Prepare: not an error msg!");
|
||||||
|
|
||||||
|
if (response.media_response().error().error())
|
||||||
|
throw std::runtime_error("Prepare failed: '" + response.media_response().error().message() + "'");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void mediaGet(std::vector<unsigned char>& data)
|
||||||
|
{
|
||||||
|
while (mediaGetPart(data) > 0)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::size_t mediaGetPart(std::vector<unsigned char>& data)
|
||||||
|
{
|
||||||
|
// Send request
|
||||||
|
Remote::ClientMessage request;
|
||||||
|
|
||||||
|
request.set_type( Remote::ClientMessage::MediaRequest);
|
||||||
|
|
||||||
|
request.mutable_media_request()->set_type( Remote::MediaRequest::TypeMediaGetPart);
|
||||||
|
request.mutable_media_request()->mutable_get_part()->set_requested_data_size(65536);
|
||||||
|
|
||||||
|
std::cout << "Sending GetPart request" << std::endl;
|
||||||
|
sendMsg(request);
|
||||||
|
|
||||||
|
std::cout << "Waiting for response" << std::endl;
|
||||||
|
// Receive response
|
||||||
|
Remote::ServerMessage response;
|
||||||
|
recvMsg(response);
|
||||||
|
|
||||||
|
std::cout << "Got a response" << std::endl;
|
||||||
|
|
||||||
|
if (!response.has_media_response())
|
||||||
|
throw std::runtime_error("not an media response");
|
||||||
|
|
||||||
|
// Process message
|
||||||
|
switch( response.media_response().type())
|
||||||
|
{
|
||||||
|
case Remote::MediaResponse::TypeError:
|
||||||
|
{
|
||||||
|
std::string msg;
|
||||||
|
if (response.media_response().has_error())
|
||||||
|
{
|
||||||
|
if (response.media_response().error().has_message())
|
||||||
|
throw std::runtime_error("Error spotted: '" + response.media_response().error().message()+ "'");
|
||||||
|
else
|
||||||
|
throw std::runtime_error("Error spotted, no msg");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
throw std::runtime_error("Error spotted but no error message");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Remote::MediaResponse::TypePart:
|
||||||
|
if (!response.media_response().has_part())
|
||||||
|
throw std::runtime_error("not an media part");
|
||||||
|
|
||||||
|
std::copy(response.media_response().part().data().begin(), response.media_response().part().data().end(), std::back_inserter(data));
|
||||||
|
|
||||||
|
return response.media_response().part().data().size();
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
throw std::runtime_error("Unhandled response.media_response().type()!");
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void mediaTerminate(void)
|
||||||
|
{
|
||||||
|
// Send request
|
||||||
|
Remote::ClientMessage request;
|
||||||
|
|
||||||
|
request.set_type( Remote::ClientMessage::MediaRequest);
|
||||||
|
|
||||||
|
request.mutable_media_request()->set_type( Remote::MediaRequest::TypeMediaTerminate);
|
||||||
|
request.mutable_media_request()->mutable_terminate();
|
||||||
|
|
||||||
|
|
||||||
|
sendMsg(request);
|
||||||
|
|
||||||
|
// Receive response
|
||||||
|
Remote::ServerMessage response;
|
||||||
|
recvMsg(response);
|
||||||
|
|
||||||
|
|
||||||
|
// Process message
|
||||||
|
if (!response.has_media_response())
|
||||||
|
throw std::runtime_error("Terminate: not an media response");
|
||||||
|
|
||||||
|
if (!response.media_response().has_error())
|
||||||
|
throw std::runtime_error("Terminate: not an error msg!");
|
||||||
|
|
||||||
|
if (response.media_response().error().error())
|
||||||
|
throw std::runtime_error("Terminate failed: '" + response.media_response().error().message() + "'");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void sendMsg(const ::google::protobuf::Message& message)
|
void sendMsg(const ::google::protobuf::Message& message)
|
||||||
{
|
{
|
||||||
std::ostream os(&_outputStreamBuf);
|
std::ostream os(&_outputStreamBuf);
|
||||||
@@ -431,6 +580,11 @@ class TestClient
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
// lib init
|
||||||
|
Av::AvInit();
|
||||||
|
Transcode::AvConvTranscoder::init();
|
||||||
|
|
||||||
|
bool extendedTests = false;
|
||||||
|
|
||||||
// Runs in its own thread
|
// Runs in its own thread
|
||||||
// Listen on any
|
// Listen on any
|
||||||
@@ -440,20 +594,18 @@ int main()
|
|||||||
// connect to loopback
|
// connect to loopback
|
||||||
TestClient client( boost::asio::ip::tcp::endpoint( boost::asio::ip::address_v4::loopback(), 5080));
|
TestClient client( boost::asio::ip::tcp::endpoint( boost::asio::ip::address_v4::loopback(), 5080));
|
||||||
|
|
||||||
// Get Artists
|
// ****** Artists *********
|
||||||
std::vector<ArtistInfo> artists;
|
std::vector<ArtistInfo> artists;
|
||||||
client.getArtists(artists);
|
client.getArtists(artists);
|
||||||
|
|
||||||
// Dump artists
|
|
||||||
std::cout << "Got " << artists.size() << " artists!" << std::endl;
|
std::cout << "Got " << artists.size() << " artists!" << std::endl;
|
||||||
BOOST_FOREACH(const ArtistInfo& artist, artists)
|
BOOST_FOREACH(const ArtistInfo& artist, artists)
|
||||||
std::cout << "Artist: '" << artist << "'" << std::endl;
|
std::cout << "Artist: '" << artist << "'" << std::endl;
|
||||||
|
|
||||||
// Get genres
|
// ***** Genres *********
|
||||||
std::vector<GenreInfo> genres;
|
std::vector<GenreInfo> genres;
|
||||||
client.getGenres(genres);
|
client.getGenres(genres);
|
||||||
|
|
||||||
// Dump genres
|
|
||||||
std::cout << "Got " << genres.size() << " genres!" << std::endl;
|
std::cout << "Got " << genres.size() << " genres!" << std::endl;
|
||||||
BOOST_FOREACH(const GenreInfo& genre, genres)
|
BOOST_FOREACH(const GenreInfo& genre, genres)
|
||||||
std::cout << "Genre: '" << genre << "'" << std::endl;
|
std::cout << "Genre: '" << genre << "'" << std::endl;
|
||||||
@@ -465,25 +617,44 @@ int main()
|
|||||||
std::cout << "Release: '" << release << "'" << std::endl;
|
std::cout << "Release: '" << release << "'" << std::endl;
|
||||||
|
|
||||||
// **** Tracks ******
|
// **** Tracks ******
|
||||||
/* {
|
{
|
||||||
std::vector<TrackInfo> tracks;
|
std::vector<TrackInfo> tracks;
|
||||||
client.getTracks(tracks, std::vector<uint64_t>(), std::vector<uint64_t>(), std::vector<uint64_t>());
|
client.getTracks(tracks, std::vector<uint64_t>(), std::vector<uint64_t>(), std::vector<uint64_t>());
|
||||||
BOOST_FOREACH(const TrackInfo& track, tracks)
|
BOOST_FOREACH(const TrackInfo& track, tracks)
|
||||||
std::cout << "Track: '" << track << "'" << std::endl;
|
std::cout << "Track: '" << track << "'" << std::endl;
|
||||||
}*/
|
|
||||||
|
|
||||||
BOOST_FOREACH(const ArtistInfo& artist, artists)
|
|
||||||
{
|
|
||||||
// Get the tracks for each artist
|
|
||||||
std::vector<TrackInfo> tracks;
|
|
||||||
client.getTracks(tracks, std::vector<uint64_t>(1, artist.id), std::vector<uint64_t>(), std::vector<uint64_t>());
|
|
||||||
|
|
||||||
std::cout << "Artist '" << artist.name << "', nb tracks = " << tracks.size() << std::endl;
|
|
||||||
BOOST_FOREACH(const TrackInfo& track, tracks)
|
|
||||||
std::cout << "Track: '" << track << "'" << std::endl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
testServer.stop();
|
// Caution: long test!
|
||||||
|
if (extendedTests)
|
||||||
|
{
|
||||||
|
BOOST_FOREACH(const ArtistInfo& artist, artists)
|
||||||
|
{
|
||||||
|
// Get the tracks for each artist
|
||||||
|
std::vector<TrackInfo> tracks;
|
||||||
|
client.getTracks(tracks, std::vector<uint64_t>(1, artist.id), std::vector<uint64_t>(), std::vector<uint64_t>());
|
||||||
|
|
||||||
|
std::cout << "Artist '" << artist.name << "', nb tracks = " << tracks.size() << std::endl;
|
||||||
|
BOOST_FOREACH(const TrackInfo& track, tracks)
|
||||||
|
std::cout << "Track: '" << track << "'" << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ****** Transcode test ********
|
||||||
|
{
|
||||||
|
std::vector<unsigned char> data;
|
||||||
|
client.getMediaAudio(1, data);
|
||||||
|
|
||||||
|
std::cout << "Media size = " << data.size() << std::endl;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
std::vector<unsigned char> data;
|
||||||
|
client.getMediaAudio(100, data);
|
||||||
|
|
||||||
|
std::cout << "Media size = " << data.size() << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::cout << "End of tests!" << std::endl;
|
||||||
}
|
}
|
||||||
catch(std::exception& e)
|
catch(std::exception& e)
|
||||||
{
|
{
|
||||||
@@ -491,6 +662,7 @@ int main()
|
|||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::cout << "Normal quit..." << std::endl;
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ AvConvTranscoder::AvConvTranscoder(const Parameters& parameters)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
AvConvTranscoder::process(void)
|
AvConvTranscoder::process(void)
|
||||||
{
|
{
|
||||||
std::size_t readDatasSize = 1024; // TODO parametrize elsewhere?
|
std::size_t readDatasSize = 1024; // TODO parametrize elsewhere?
|
||||||
|
|||||||
Reference in New Issue
Block a user