139ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber/*
239ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber * Copyright (C) 2010 The Android Open Source Project
339ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber *
439ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
539ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber * you may not use this file except in compliance with the License.
639ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber * You may obtain a copy of the License at
739ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber *
839ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
939ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber *
1039ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber * Unless required by applicable law or agreed to in writing, software
1139ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
1239ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1339ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber * See the License for the specific language governing permissions and
1439ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber * limitations under the License.
1539ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber */
1639ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
1739ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber#ifndef UDP_PUSHER_H_
1839ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
1939ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber#define UDP_PUSHER_H_
2039ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
2139ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber#include <media/stagefright/foundation/AHandler.h>
2239ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
2339ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber#include <stdio.h>
2439ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber#include <arpa/inet.h>
2539ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
2639ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Hubernamespace android {
2739ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
2839ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huberstruct UDPPusher : public AHandler {
2939ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    UDPPusher(const char *filename, unsigned port);
3039ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
3139ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    void start();
3239ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
3339ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huberprotected:
3439ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    virtual ~UDPPusher();
3539ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    virtual void onMessageReceived(const sp<AMessage> &msg);
3639ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
3739ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huberprivate:
3839ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    enum {
3939ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber        kWhatPush = 'push'
4039ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    };
4139ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
4239ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    FILE *mFile;
4339ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    int mSocket;
4439ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    struct sockaddr_in mRemoteAddr;
4539ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
4639ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    uint32_t mFirstTimeMs;
4739ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    int64_t mFirstTimeUs;
4839ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
4939ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    bool onPush();
5039ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
5139ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    DISALLOW_EVIL_CONSTRUCTORS(UDPPusher);
5239ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber};
5339ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
5439ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber}  // namespace android
5539ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
5639ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber#endif  // UDP_PUSHER_H_
57