157648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber/*
257648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber * Copyright (C) 2010 The Android Open Source Project
357648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber *
457648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
557648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber * you may not use this file except in compliance with the License.
657648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber * You may obtain a copy of the License at
757648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber *
857648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
957648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber *
1057648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber * Unless required by applicable law or agreed to in writing, software
1157648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
1257648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1357648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber * See the License for the specific language governing permissions and
1457648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber * limitations under the License.
1557648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber */
1657648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber
1757648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber#ifndef UDP_PUSHER_H_
1857648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber
1957648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber#define UDP_PUSHER_H_
2057648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber
2157648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber#include <media/stagefright/foundation/AHandler.h>
2257648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber
2357648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber#include <stdio.h>
2457648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber#include <arpa/inet.h>
2557648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber
2657648e4eec7dd2593af467877bc7cce4aa654759Andreas Hubernamespace android {
2757648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber
2857648e4eec7dd2593af467877bc7cce4aa654759Andreas Huberstruct UDPPusher : public AHandler {
2957648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber    UDPPusher(const char *filename, unsigned port);
3057648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber
3157648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber    void start();
3257648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber
3357648e4eec7dd2593af467877bc7cce4aa654759Andreas Huberprotected:
3457648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber    virtual ~UDPPusher();
3557648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber    virtual void onMessageReceived(const sp<AMessage> &msg);
3657648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber
3757648e4eec7dd2593af467877bc7cce4aa654759Andreas Huberprivate:
3857648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber    enum {
3957648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber        kWhatPush = 'push'
4057648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber    };
4157648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber
4257648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber    FILE *mFile;
4357648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber    int mSocket;
4457648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber    struct sockaddr_in mRemoteAddr;
4557648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber
4657648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber    uint32_t mFirstTimeMs;
4757648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber    int64_t mFirstTimeUs;
4857648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber
4957648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber    bool onPush();
5057648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber
5157648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber    DISALLOW_EVIL_CONSTRUCTORS(UDPPusher);
5257648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber};
5357648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber
5457648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber}  // namespace android
5557648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber
5657648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber#endif  // UDP_PUSHER_H_
57